onlinetools.dev

Inspecteur de caractères Unicode

Voyez points de code, octets UTF-8/UTF-16 et échappements de chaque caractère

Exécution locale
loading…
À propos de cet outil

Collez n’importe quel texte et voyez chaque caractère disséqué : son point de code (U+XXXX), ses octets UTF-8, ses unités UTF-16, sa séquence d’échappement JavaScript, son entité HTML et sa catégorie générale — plus les totaux de points de code, d’unités UTF-16, d’octets UTF-8 et de caractères perçus par l’utilisateur (grappes de graphèmes).

C’est l’outil des moments "pourquoi cette chaîne est-elle bizarre ?" : les caractères invisibles (espaces de largeur nulle, BOM, marques directionnelles) apparaissent comme des lignes visibles ; les caractères sosies (а cyrillique contre a latin) révèlent des points de code différents ; et un emoji qui "fait un caractère" se révèle être sept points de code reliés par des liants de largeur nulle.

Les quatre totaux de longueur différents répondent à l’éternelle question : pourquoi le .length de JavaScript, une limite d’octets en base de données et ce que voit l’utilisateur ne sont-ils jamais d’accord sur la longueur d’une chaîne.

Questions fréquentes

Pourquoi "🎉".length === 2 en JavaScript ?
Les chaînes JavaScript comptent des unités de code UTF-16. Les caractères au-delà de U+FFFF — dont la plupart des emojis — nécessitent une paire de substitution, soit deux unités. L’inspecteur montre les deux unités et le vrai point de code, et le résumé les compte séparément.
Qu’est-ce qu’une grappe de graphèmes ?
Ce qu’un lecteur perçoit comme un seul caractère. é peut être deux points de code (e + accent combinant), et les emojis de famille peuvent en compter sept ou plus reliés par des liants de largeur nulle. Le décompte de graphèmes utilise l’Intl.Segmenter du navigateur — ce qui se rapproche le plus des "caractères tels que les utilisateurs les voient".
Comment trouver les caractères invisibles dans une chaîne ?
Collez-la ici — chaque point de code a sa ligne, y compris les espaces de largeur nulle (U+200B), les espaces insécables (U+00A0), les BOM (U+FEFF) et les marques directionnelles, chacun étiqueté par catégorie. Ce sont les coupables classiques derrière des chaînes "identiques" qui échouent aux tests d’égalité.
Que m’apprennent les séquences d’octets UTF-8 ?
Exactement ce qui sera stocké ou transmis : l’ASCII fait un octet, la plupart des extensions latines deux, le CJC trois, les emojis quatre. Si un système tronque au milieu d’une séquence, vous obtenez des caractères de remplacement (�) — la vue en octets montre où de telles coupures tomberaient.
Outils associés