Qu'est-ce que le ZWJ ?
Le ZWJ (Zero Width Joiner, U+200D) est un caractère de formatage invisible qui demande au moteur de rendu de lier deux glyphes adjacents pour former une unité visuelle.
Voici les principales situations où le ZWJ intervient :
1 Ligatures et jonctions typographiques
Forcer ou préserver des ligatures/jonctions dans certains systèmes d'écriture.
2 Scripts et shaping Unicode
Influence directe sur la formation des glyphes en arabe, indiens et d'autres écritures.
3 Emojis et séquences combinées
Le ZWJ relie des emojis pour former des pictos composés.
4 Pièges techniques
Invisible à l'œil nu, il perturbe tri, recherche, parsers et validations.
Problèmes classiques avec le ZWJ
Copier-coller depuis le web ou un mobile
Insère un ZWJ entre des caractères, rendant une adresse, un slug ou un identifiant invalide sans que cela se voie.
Tests unitaires qui échouent
Une chaîne contient un U+200D non prévu, les comparaisons exactes et hash changent.
Trim() ou strip() inefficace
Ces fonctions ignorent le ZWJ, qui n'est ni un espace ni un visible standard.
Regex inadaptées
Selon le moteur, \s ou \w ne ciblent pas U+200D (catégorie Cf), il passe au travers.
Exemple de problème courant :
Symptômes qui doivent vous alerter
🚨 Signaux d'alarme
Comment le détecter
✨ Solution recommandée : Clean ASCII
Clean ASCII détecte automatiquement la présence de ZWJ (U+200D) dans vos chaînes. Il identifie l'emplacement exact et explique l'impact potentiel sur votre rendu et vos traitements.
✅ Détection automatique
ZWJ, ZWNJ, séquences emoji, caractères de formatage
📊 Analyse complète
Codepoint U+200D, positions précises, contexte des glyphes adjacents
🧹 Nettoyage automatique
Suppression ciblée du ZWJ hors cas légitimes, remplacement sécurisé
💾 Export propre
Texte nettoyé prêt pour vos parsers, CSV, APIs et bases
Autres méthodes de détection
Affichage dans l'éditeur
En ligne de commande (Unix)
En code
JavaScript
Python
Excel / Google Sheets
Nettoyer et prévenir le ZWJ
🚀 Solution rapide avec Clean ASCII
Avant d'écrire des scripts, utilisez Clean ASCII pour repérer et supprimer les ZWJ non désirés tout en préservant les cas légitimes (emojis, scripts complexes).
Méthodes techniques avancées
🔧 Normaliser
🧹 Filtrer
strip_zwj() qui retire U+200D hors contextes autorisés
⚙️ Automatiser
Checklist rapide
strip_zwj() dans vos libs
Conclusion
Le ZWJ est minuscule mais déterminant: il façonne le rendu et influence vos traitements.
Adoptez une détection systématique, clarifiez les contextes où il est autorisé et appliquez un nettoyage ciblé: vous éviterez la majorité des bugs liés aux séquences invisibles.
Détectez les ZWJ maintenant
Utilisez notre outil pour identifier et nettoyer les ZWJ (U+200D) dans vos textes.
Analyser mon texte pour le ZWJ