Intermédiaire 8 min de lecture 25 janvier 2025

Replace quotes : remplacer guillemets et apostrophes sans casse

Tout a l’air correct, mais un JSON refuse de parser, un CSV part en vrille, une commande shell plante. La cause fréquente : des guillemets “intelligents” ou des apostrophes typographiques. Ils ressemblent aux quotes ASCII, mais n’en sont pas. Voici comment les repérer et les remplacer proprement.

Qu'est-ce que “replace quotes” ?

C’est l’action de convertir toutes les variantes de guillemets et d’apostrophes en versions cohérentes et sûres (ASCII), afin d’éviter les erreurs de parsing, d’échappement et d’affichage.

Voici les principales familles de guillemets et apostrophes à connaître :

1 Guillemets ASCII et caractères simples

Les versions “sûres” et attendues par la plupart des parseurs :

Apostrophe ' (39), Double quote " (34), Backslash \ (92) pour échappement

2 Guillemets typographiques (smart quotes)

Souvent introduits par le web ou les traitements de texte :

“ (U+201C), ” (U+201D), ‘ (U+2018), ’ (U+2019)

3 Guillemets « à la française » et espaces associés

Utilisation typographique fréquente en français :

« (U+00AB), » (U+00BB)
Espace fine insécable (U+202F) autour des guillemets
Apostrophe typographique (U+2019) dans l’orthographe française
Espace insécable (U+00A0) parfois collée aux guillemets

4 Marques techniques et entités liées aux quotes

Transformations et échappements rencontrés en HTML/JS/CSV :

" (HTML), ' (HTML), “ ” ‘ ’
Échappement JS/JSON : \" et \'
CSV : doublage des quotes "" pour échapper

Problèmes classiques

Copier-coller depuis le web ou Word

Ajoute des “smart quotes” qui cassent JSON, YAML, CSV ou des commandes shell.

Tests unitaires qui échouent

Comparaison de chaînes en échec à cause de “ ” et ‘ ’ au lieu de " et '.

Replace ou substitute inefficaces

Remplacer " par rien n’enlève pas “ ” ; il faut traiter les quotes Unicode.

Regex trop limitées

Des patterns comme [\"'] n’attrapent pas les guillemets typographiques Unicode.

Exemple de problème courant :

# Deux chaînes semblent identiques mais diffèrent
string1 = "Hello"
string2 = “Hello” # Utilise U+201C et U+201D
assert string1 == string2 # ❌ Échec

Symptômes qui doivent vous alerter

🚨 Signaux d'alarme

!
Un diff git affiche des changements sur des lignes avec des guillemets sans différence apparente
!
Un CSV se décale car des champs contiennent des “smart quotes” non échappées
!
Un .env refuse une variable car les quotes autour de la valeur ne sont pas ASCII
!
Votre éditeur surligne des guillemets courbes quand vous déplacez le curseur
!
Un copier-coller d’une commande de blog retourne “command not found” à cause de “ ”

Comment les détecter

Solution recommandée : Clean ASCII

Clean ASCII repère instantanément les guillemets et apostrophes non standard et propose des remplacements sûrs. L’outil met en évidence chaque caractère problématique et suggère des conversions vers des quotes ASCII.

✅ Détection automatique

“ ” ‘ ’, « », apostrophes typographiques, entités HTML

📊 Analyse complète

Codes Unicode, positions exactes, recommandations de remplacement

🧹 Remplacement automatique

Conversion vers " et ' avec respect des contextes (JSON, CSV, texte)

💾 Export propre

Téléchargement du texte normalisé prêt à intégrer

Autres méthodes de détection

Affichage dans l'éditeur

Activez “render special characters”, “show Unicode” dans VS Code, JetBrains, Sublime
Installez un linter qui surligne “ ” ‘ ’ et « »

En ligne de commande (Unix)

# Rechercher les guillemets Unicode non ASCII
grep -P "[\x{2018}-\x{201F}\x{00AB}\x{00BB}]" fichier.txt
# Visualiser les caractères spéciaux et échappements
sed -n l fichier.txt
# Afficher les caractères non imprimables/entités
cat -A fichier.txt
# Inspecter les codes hexadécimaux
hexdump -C fichier.txt

En code

JavaScript

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

Python

s.translate(str.maketrans({'\u2018':"'", '\u2019':"'", '\u201C':'"', '\u201D':'"', '\u00AB':'"', '\u00BB':'"'}))

Excel / Google Sheets

SUBSTITUE(SUBSTITUE(SUBSTITUE(A1;"“";"""");"”";"""");"’";"'")

Nettoyer et prévenir

🚀 Solution rapide avec Clean ASCII

Avant de coder un remplaçant maison, utilisez Clean ASCII pour appliquer un replace quotes fiable en un clic :

Détection des smart quotes
Remplacement intelligent en ASCII
Export immédiat

Méthodes techniques avancées

🔧 Normaliser

Appliquez Unicode NFKC/NFC pour homogénéiser la ponctuation
Convertissez systématiquement “ ” ‘ ’ « » en " et '
Uniformisez le style de quotes (simple ou double) dans le dépôt

🧹 Filtrer

Écrivez des fonctions replace_quotes() couvrant toutes les variantes
Traitez les guillemets « » et les espaces fines autour
Bloquez les quotes non ASCII en entrée utilisateur

⚙️ Automatiser

Hooks pre-commit pour refuser les “smart quotes” et imposer ASCII
Tests garantissant l’absence de guillemets non standard
Linting sur la CI (ESLint/Prettier, phpcs, yamllint) avec règles de quotes

Checklist rapide

Style unique de quotes défini pour le projet (simple ou double)
ESLint/Prettier/PHPCS configurés pour forcer les quotes souhaitées
Recherche automatique des “smart quotes” dans le pipeline
Raccourcis éditeur pour insérer uniquement des quotes ASCII
Tests qui valident le remplacement de “ ” ‘ ’ « » en " et '
Documentation interne sur l’échappement JSON/CSV/SQL et les quotes

Conclusion

Les guillemets non standard ressemblent aux quotes classiques, mais provoquent des erreurs réelles. Les remplacer systématiquement vous fait gagner des heures.

Mettez en place un “replace quotes” automatique, normalisez vos contenus et vous éliminez la majorité des soucis de parsing, d’échappement et d’import/export.

Replace quotes dès maintenant

Utilisez notre outil pour identifier et remplacer les quotes problématiques dans vos textes.

Traiter mes quotes