Outils
Guides

Hex / ASCII / Unicode

Encodage

Convertit entre texte, octets hex UTF-8 et points de code Unicode.

100 % côté client Sans backend
Texte
Hex (UTF-8)
Points de code
Sur cette page

Qu’est-ce qu’un convertisseur hex / ASCII / Unicode ?#

Le même morceau de texte peut s’écrire de trois façons réellement différentes, et cet outil vous laisse les regarder toutes les trois à la fois :

  • Texte — les caractères littéraux tels que vous les taperiez et liriez (Hello 世界 🌍).
  • Octets hex — la séquence d’octets UTF-8 brute en hexadécimal, un octet par paire (48 65 6C 6C 6F 20 ...). C’est ce qui voyage réellement sur un réseau ou repose dans un fichier.
  • Points de code — les valeurs scalaires Unicode, un U+XXXX par caractère (U+0048 U+0065 ... U+1F30D). C’est ainsi qu’Unicode lui-même numérote les caractères, indépendamment de tout encodage d’octets.

La raison pour laquelle ces trois vues comptent est qu’elles n’ont pas la même longueur dès qu’on quitte l’ASCII — et c’est la source unique de plus de confusion sur l’encodage de texte que tout le reste. Un caractère tient dans un point de code, mais il peut occuper d’un à quatre octets en UTF-8. L’emoji globe terrestre 🌍 est un seul caractère (U+1F30D), mais en UTF-8 il fait quatre octets (F0 9F 8C 8D). Si vous avez déjà mal compté une longueur de chaîne, vu une base de données rejeter une chaîne comme « trop longue », ou regardé une tranche de sous-chaîne atterrir au milieu d’un caractère, vous avez déjà rencontré cet écart.

Modifiez n’importe laquelle des trois représentations et les deux autres sont dérivées instantanément. L’analyseur est tolérant : l’entrée hex accepte les espaces, deux-points, tirets, préfixes 0x ; l’entrée par points de code accepte U+, \u, 0x, ou de l’hexa nue, séparés par des espaces, virgules ou points-virgules.

Mode d’emploi#

  1. Utilisez le sélecteur de mode au-dessus de la zone de saisie pour déclarer ce que vous tapez : Texte, Hex ou Points de code.
  2. Collez ou éditez dans la zone de saisie. Les deux autres vues se remplissent automatiquement à droite.
  3. Utilisez Copier à côté de n’importe lequel des trois champs de résultat pour récupérer cette représentation.
  4. Exemple charge Hello 世界 🌍 afin que vous voyiez comment ASCII, CJK et un emoji se mappent chacun différemment. Effacer vide tout.

Principales fonctionnalités#

  • Trois vues, une seule source de vérité. Éditez la représentation que vous avez sous la main ; les autres sont calculées, jamais maintenues à la main.
  • Octets UTF-8, pas Latin-1. La sortie hex est la vraie séquence d’octets UTF-8 sur le réseau, ce qu’utilisent presque tous les systèmes modernes — et non l’hypothèse héritée d’un octet par caractère.
  • Conscient des points de code, y compris les caractères astraux. L’itération par for...of signifie qu’un emoji compte comme un seul point de code, pas comme deux moitiés de substitut, donc U+1F30D est ce que vous voyez — jamais D83C DF0D.
  • Strict au retour. Les octets hex qui ne forment pas de l’UTF-8 valide (chaîne de longueur impaire, ou octet de continuation orphanelin) sont signalés par une erreur claire au lieu d’être décodés en texte illisible. Les points de code hors plage valide, et les substituts isolés (U+D800–U+DFFF), sont rejetés.

Exemple détaillé#

Chargez Exemple pour obtenir Hello 世界 🌍, et les trois vues dérivées sont :

Texte :        Hello 世界 🌍
Octets hex :   48 65 6C 6C 6F 20 E4 B8 96 E7 95 8C 20 F0 9F 8C 8D
Points de code : U+0048 U+0065 U+006C U+006C U+006F U+0020 U+4E16 U+754C U+0020 U+1F30D

Les lettres ASCII H e l l o sont la partie ennuyeuse : un octet chacune, points de code U+0048 à U+006F. La partie intéressante est le reste :

  • 世 (U+4E16) fait trois octets UTF-8 : E4 B8 96. 界 (U+754C) fait aussi trois octets : E7 95 8C. Un seul caractère, mais pas un seul octet.
  • 🌍 (U+1F30D) fait quatre octets UTF-8 : F0 9F 8C 8D. Le point de code est au-dessus de U+FFFF, donc il vit dans le plan astral d’Unicode et nécessite une séquence UTF-8 de 4 octets — et c’est pourtant un seul caractère, une seule entrée dans la liste des points de code.

Faites l’expérience en sens inverse : basculez le mode sur Points de code, collez U+1F600 U+1F604, et regardez apparaître à la fois le texte (emojis de la famille 😄) et l’hexa UTF-8. Cet aller-retour est précisément la façon de confirmer quels octets correspondent à quel caractère.

FAQ#

Pourquoi mon emoji prend-il quatre octets hex mais un seul point de code ?#

Parce que UTF-8 est un encodage à largeur variable. Les points de code sous U+0080 tiennent dans un octet ; U+0080–U+07FF en prennent deux ; U+0800–U+FFFF trois ; et tout ce qui est à U+10000 ou au-dessus (la plupart des emojis, les écritures historiques, les symboles musicaux) en prend quatre. Le point de code est le nom qu’Unicode donne au caractère ; les octets sont la façon dont UTF-8 le stocke. Même caractère, deux nombres différents.

Quelle est la différence entre U+XXXX et \uXXXX ?#

Ils désignent le même point de code mais viennent de mondes différents. U+0041 est la notation d’Unicode lui-même. \uXXXX est l’échappement utilisé dans les chaînes littérales JavaScript, Java et C. Le hic : \uXXXX ne contient que quatre chiffres hex, donc il ne peut pas exprimer directement un point de code astral comme U+1F30D — les langages qui utilisent \u ont besoin soit d’une paire de substituts, soit d’une syntaxe étendue comme \u{1F30D}. L’entrée par points de code de cet outil accepte les deux formes.

J’ai collé des octets hex et j’ai eu une erreur « UTF-8 invalide ». Qu’est-ce que cela signifie ?#

Les octets que vous avez collés ne forment pas une séquence UTF-8 légale — le plus souvent parce que la chaîne hex a une longueur impaire (un demi-octet manquant), qu’un octet de tête annonce une séquence multioctet que les octets suivants ne complètent pas, ou que les données étaient en réalité encodées dans autre chose que UTF-8 (GBK, Shift-JIS, Latin-1 brut). Le décodeur utilise le mode strict, donc le problème est signalé au lieu de produire silencieusement des caractères de remplacement.

Puis-je utiliser cela pour compter les « vrais » caractères d’une chaîne ?#

Oui — le compte de points de code est celui qu’un utilisateur aurait à l’esprit, et c’est ce sur quoi la plupart des interfaces devraient se limiter. Notez que Hello 世界 🌍 fait 10 caractères par points de code, alors qu’il fait 17 octets en UTF-8 et 11 unités de code UTF-16 en JavaScript (string.length). Si vous avez besoin d’un budget de caractères pour un tweet ou un champ de formulaire, comptez les points de code, pas les octets et pas string.length.