Inspecteur Unicode

Collez du texte et voyez chaque caractère d’un coup — y compris les invisibles.

Mode d’emploi

  1. Collez ou saisissez du texte : les cinq compteurs, la grille de caractères et le détail du premier caractère apparaissent immédiatement — sans bouton à presser.
  2. Lisez d’abord les cinq nombres. Points de code, grappes de graphèmes, octets UTF-8 et unités UTF-16 sont quatre façons de compter le même texte ; « Café » saisi avec cinq lettres plus un accent combinant compte 6 points de code mais 5 grappes — c’est la raison habituelle pour laquelle deux chaînes identiques à l’œil échouent à une comparaison.
  3. Cliquez sur une pastille de la grille pour ouvrir sa fiche : point de code, octets UTF-8 / UTF-16 / UTF-32, nom officiel Unicode, catégorie générale, écriture et bloc. Une grappe composée de plusieurs points de code (emoji familial, lettre accentuée) obtient une ligne par point de code.
  4. Les caractères invisibles sont mis en évidence dans la grille ; passez à « Invisibles uniquement » pour ne voir que ces grappes. Cela couvre les espaces de largeur nulle, les jonctions, les marques directionnelles, les espaces insécables, les caractères de contrôle et les substituts non appariés.
  5. « Copier les points de code » renvoie tout le texte sous la forme « U+0043 U+0061 … », prête à coller dans du code ou un rapport de bogue. « Copier cette grappe » fait de même pour la grappe sélectionnée.

Exemple

Saisie

Café — “smart quotes” vs​plain 👍🏽

Points de code

U+0043 U+0061 U+0066 U+0065 U+0301 U+0020 U+2014 U+0020 U+201C U+0073 U+006D U+0061 U+0072 U+0074 U+0020 U+0071 U+0075 U+006F U+0074 U+0065 U+0073 U+201D U+00A0 U+0076 U+0073 U+200B U+0070 U+006C U+0061 U+0069 U+006E U+0020 U+1F44D U+1F3FD

34 points de code, 32 grappes, 2 caractères invisibles : l’espace insécable U+00A0 avant « vs » et l’espace de largeur nulle U+200B avant « plain ». « Cafe » plus U+0301 forme une grappe de deux points de code, et 👍🏽 est une grappe de deux points de code (U+1F44D + U+1F3FD). Sélectionnez la pastille 👍🏽 pour voir les deux lignes.

Règles, limites et problèmes connus

  • Les noms proviennent d’une table sélectionnée de 499 entrées officielles — ASCII, Latin-1, ponctuation générale, formes pleine largeur, ponctuation CJK courante, sélecteurs de variante et caractères de formatage invisibles. Les caractères hors de cette table affichent « — » comme nom ; la catégorie, l’écriture et le bloc sont calculés pour chaque caractère.
  • Les noms et les noms de blocs restent volontairement en anglais Unicode officiel : ce sont des identifiants utilisés dans les spécifications et le code, et une traduction ne pourrait plus être comparée à la norme.
  • Les blocs et écritures suivent Unicode 16.0.0. Pour les caractères ajoutés plus tard, le bloc peut manquer (« — ») et l’écriture peut retomber sur son code (par exemple « Latn »).
  • Les octets UTF-8 d’un substitut non apparié sont comptés comme U+FFFD (EF BF BD) — c’est ce que fait l’encodeur du navigateur ; le texte lui-même n’est jamais modifié.
  • Les grappes de graphèmes utilisent Intl.Segmenter (Chrome 87+, Safari 14.1+) ; sans lui, l’outil compte par point de code et le signale dans l’avis.
  • Les retours à la ligne comptent comme caractères invisibles car ce sont des caractères de contrôle. C’est exactement ce que l’on veut en traquant des octets parasites en fin de ligne, mais cela signifie que « invisibles » inclut les sauts de ligne d’un collage multiligne.
  • Lecture seule : le texte n’est jamais modifié. Pour supprimer les caractères invisibles, utilisez le Nettoyeur de texte ; pour les écrire en séquences \u ou en pourcent, utilisez les outils d’échappement.
  • Un glyphe en forme de rectangle signifie seulement que la police de votre système ne possède pas le caractère — pas que celui-ci est non affecté.
  • Jusqu’à 100 000 points de code. La grille affiche les 1 000 premières grappes, tandis que chaque compteur ci-dessus couvre toujours tout le texte.
  • Rien n’est envoyé : tout s’exécute dans votre navigateur, le texte ne quitte jamais la page, et l’outil continue de fonctionner réseau coupé.

Ce dont on a généralement besoin ensuite, quand une chaîne devient enfin compréhensible.