Des indices ne sont pas un diagnostic
Des entrées semblables peuvent ne pas se dédoublonner ; recherches et longueurs peuvent surprendre. Formes d’accents, apostrophes et règles différentes provoquent des symptômes proches. Isolez une ligne avant modification globale. Pour du contenu confidentiel, créez un exemple équivalent. Des codes précis éclairent la réparation ; un effacement large masque cause et effets indésirables.
Nommer les points de code
General Punctuation comprend U+200B ZERO WIDTH SPACE, U+200C ZERO WIDTH NON-JOINER, U+200D ZERO WIDTH JOINER et U+2060 WORD JOINER, aux fonctions différentes. Notez code et position. Le marqueur [U+200B] rend une position visible sans être le caractère original : le compter ajoute de la notation. Séparez copie et diagnostic.
L’aspect peut masquer une autre séquence
AB a deux points ; A + U+200B + B en a trois et trois graphèmes dans l’exemple, presque sans différence visuelle. A + U+200D + B garde trois points mais deux graphèmes. Ne supposez pas que chaque invisible ajoute un graphème. Les nombres ne classent pas les caractères : inspectez codes et méthode.
Certains invisibles sont nécessaires
Les joiners relient des figures d’emoji ; les retirer peut les séparer. D’autres écritures utilisent des éléments modifiant les liaisons des lettres. N’appliquez pas un nettoyage de listes italiennes aveuglément au multilingue. Voir emoji et décompte. Vérifiez l’aperçu et gardez les originaux ; plus court ne prouve pas mieux.
Les espaces insécables sont un autre cas
Elles ont une largeur et gardent des paires ensemble. Remplacer peut aider la comparaison ; supprimer peut fusionner les mots. Distinguez conversion et retrait. Le guide des espaces insécables compare U+0020, U+00A0 et U+202F. La décision dépend de l’usage, pas d’une règle universelle.
Modifier une catégorie à la fois
Dupliquez, identifiez une catégorie, testez quelques lignes et notez les occurrences modifiées. Pour rechercher, envisagez des clés séparées ; pour exporter, testez l’import suivant. Ne combinez pas retrait, compression et casse : les causes deviennent opaques. Inspectez les collisions avant suppression et définissez l’égalité des doublons.
Respecter l’identité exacte des données
Mots de passe, signatures, codes et valeurs techniques peuvent exiger des séquences exactes. Suivez protocole ou responsable, pas une règle éditoriale. Les contrôles de direction dans des écritures mixtes demandent du contexte. Ce guide n’est ni un validateur de sécurité ni un détecteur exhaustif ; il aide à tracer des changements proportionnés.
Vérifier aspect et contenu
Contrôlez rendu et codes, répétez recherche ou comparaison en échec, puis mesurez dans le compteur. Déclarez retrait, substitution ou regroupement. Si besoin, examinez normalisation et encodage source. N’élargissez pas les effacements pour forcer l’égalité. Gardez exemple, original et journal pour revoir la règle.
Décrire clairement les positions
Vérifiez si l’inspecteur numérote unités UTF-16 ou symboles perçus, surtout après emoji composés. Ajoutez le voisinage : « U+200B entre A initial et B final » évite les indices ambigus. Gardez les sauts des essais multilignes et notez les blancs retirés, qui déplacent les positions. Conservez original, vue des codes et résultat ensemble.
Identifier avant modification
| Élément | Question | Choix possible |
|---|---|---|
| U+200B dans une liste | Séparation nécessaire ? | Tester conservation ou retrait |
| U+200D dans un emoji | Lie la séquence visuelle ? | Garder la séquence entière |
| U+00A0 entre mots | Doivent-ils rester ensemble ? | Conserver ou remplacer par espace |
| Contrôle de direction | Modifie l’ordre ? | Examiner le contexte sans retrait global |
Sources et vérifications
- Unicode: General Punctuation · Identification of zero-width spaces, joiners and narrow no-break space
- Unicode UTS #51: Unicode Emoji · Emoji sequences, modifiers and zero-width joiners
- MDN: Intl.Segmenter · Locale-aware segmentation including graphemes