Intermédiaire 8 min de lecture 25 janvier 2025

Guillemets droits : problèmes courants dans vos textes

Votre JSON refuse de parser, un CSV décale des colonnes, un SQL plante, un attribut HTML ne s’applique pas. Souvent, un seul caractère en est la cause : le guillemet. Droit ou typographique, simple ou double, la différence est cruciale. Voici comment repérer les confusions, choisir les bons guillemets droits et éviter les erreurs coûteuses.

Qu'est-ce que les guillemets droits ?

Les guillemets droits sont les caractères ASCII simples ' (U+0027) et doubles " (U+0022). Ils se distinguent des guillemets typographiques “ ” ‘ ’ ou « » qui sont visuellement proches mais différents en code.

Les principales familles de guillemets et signes proches :

1 Guillemets ASCII droits

Caractères attendus par JSON, CSV, la plupart des langages et formats.

" (34, U+0022), ' (39, U+0027), ` (96, U+0060)

2 Apostrophes et signes confusants

Visuellement similaires mais sémantiquement différents.

’ (U+2019), ′ (U+2032) prime, ʻ (U+02BB) okina, ʼ (U+02BC) modifier letter

3 Guillemets typographiques Unicode

Fréquents après un copier-coller depuis le web ou un traitement de texte :

“ ” (U+201C/U+201D) — doubles courbes
‘ ’ (U+2018/U+2019) — simples courbes
« » (U+00AB/U+00BB) — guillemets français
„ ” ‹ › — variantes locales

4 Cas techniques et contextuels

Shell, SQL, HTML, typographie et autocorrections :

Backtick ` en shell/Markdown
Échappement \" et \' en code
Autocorrection “Smart Quotes” dans les éditeurs

Problèmes classiques

Copier-coller depuis le web ou Word

Transforme " et ' en “ ” ou ‘ ’, ce qui casse JSON, YAML, CSV ou du code.

Tests unitaires qui échouent

Comparaison de chaînes faussement identiques : “email” ≠ "email".

Échappement ou remplacement inefficace

Ne gère que " et ' et ignore “ ” ‘ ’, laissant des erreurs silencieuses.

Regex imprécises

Classes de caractères qui n’incluent pas les guillemets typographiques Unicode.

Exemple de problème courant :

# Chaînes visuellement identiques mais différentes en code
string1 = "email@domain.com"
string2 = “email@domain.com” # Contient U+201C et U+201D
assert string1 == string2 # ❌ Échec

Symptômes qui doivent vous alerter

🚨 Signaux d'alarme

!
Un diff git montre des changements alors que seules les “quotes” ont été autocorrigées
!
Un parse CSV/JSON échoue ou produit des colonnes décalées
!
Un .env ou un YAML ne charge pas des clés à cause de “ ” ou ‘ ’
!
L’éditeur affiche des guillemets courbes à la place de " et '
!
Un copier-coller dans un terminal ou SQL provoque une erreur de syntaxe

Comment les détecter

Solution recommandée : Clean ASCII

Clean ASCII met en évidence les guillemets typographiques et les remplace en un clic par des guillemets droits. L’outil identifie leur position, le code Unicode et propose une conversion sûre pour vos formats sensibles.

✅ Détection automatique

“ ”, ‘ ’, « » et autres variantes proches des quotes ASCII

📊 Analyse complète

Code Unicode, position exacte, contexte et recommandations

🧹 Nettoyage automatique

Conversion fiable vers " et ' en respectant l’échappement

💾 Export propre

Téléchargement du texte normalisé prêt pour JSON/CSV/SQL

Autres méthodes de détection

Affichage dans l'éditeur

Désactivez “Smart Quotes” et forcez les guillemets droits dans VS Code, JetBrains, Sublime
Installez un linter qui surligne “ ”, ‘ ’ et « »

En ligne de commande (Unix)

# Repérer les guillemets typographiques
grep -nP "[\x{2018}\x{2019}\x{201C}\x{201D}\x{00AB}\x{00BB}]" fichier.txt
# Afficher explicitement les caractères spéciaux
sed -n l fichier.txt
# Visualiser les caractères non ASCII
cat -A fichier.txt
# Inspecter les codes hexadécimaux
hexdump -C fichier.txt

En code

JavaScript

str.replace(/[“”«»]/g, '"').replace(/[‘’]/g, "'")

Python

s.translate({0x201C:34,0x201D:34,0x00AB:34,0x00BB:34,0x2018:39,0x2019:39})

Excel / Google Sheets

SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(cellule;"“";"");"”";"");"‘";"'");"’";"'")

Nettoyer et prévenir

🚀 Solution rapide avec Clean ASCII

Avant d’écrire un script, essayez Clean ASCII pour transformer tous les guillemets typographiques en guillemets droits de façon sûre :

Détection des “ ” ‘ ’ « »
Conversion intelligente vers " et '
Export prêt pour JSON/CSV/SQL

Méthodes techniques avancées

🔧 Normaliser

Appliquez une table de correspondance : “ ” « » → " et ‘ ’ → '
Désactivez l’autocorrection de guillemets dans votre éditeur et vos CMS
Uniformisez l’échappement selon le format (JSON, YAML, SQL, HTML)

🧹 Filtrer

Écrivez une fonction normalize_quotes() couvrant toutes les variantes Unicode
Remplacez systématiquement « » et “ ” par " dans les données d’entrée
Bloquez les apostrophes courbes ’ dans les champs sensibles

⚙️ Automatiser

Hooks pre-commit pour refuser des fichiers contenant “ ” ‘ ’ ou « »
Tests automatisés validant les formats JSON/YAML avec " et '
Linting CI détectant quotes typographiques et échappements incorrects

Checklist rapide

Fichiers JSON/YAML valides avec guillemets droits " et '
Règles d’éditeur désactivant “Smart Quotes”
Outil affichant et surlignant les guillemets typographiques
Fonction utilitaire de normalisation des guillemets dans vos libs
Tests garantissant l’absence de “ ” ‘ ’ dans le code et les données
Documentation développeurs sur l’usage des guillemets par format

Conclusion

Les guillemets droits paraissent anodins, pourtant ils conditionnent la validité de vos formats et de votre code.

Adoptez des guillemets droits partout où ils sont requis, automatisez la détection et la normalisation, et vous éliminerez une grande partie des erreurs de parsing et d’échappement.

Détectez les guillemets typographiques maintenant

Utilisez notre outil pour identifier et convertir les guillemets typographiques en guillemets droits dans vos textes.

Analyser mon texte