Convertisseur de texte en Unicode

Convertissez du texte en points de code Unicode, entités HTML ou séquences d'échappement JavaScript, et décodez-les en retour. Prise en charge complète du plan astral et des emoji.

Convertissez du texte en points de code Unicode et inversement. Choisissez les entités HTML, les échappements JavaScript ou la notation U+. Les deux panneaux sont éditables, et les caractères hors du Basic Multilingual Plane — y compris chaque emoji — sont traités comme des points de code uniques plutôt que comme des paires de substitution.

Points de code, encodages et paires de substitution

Un point de code n'est pas un octet

Unicode assigne à chaque caractère un numéro appelé point de code, écrit U+ suivi de chiffres hexadécimaux. A est U+0041, est U+8702, et l'emoji abeille est U+1F41D. Ce numéro est l'identité du caractère. La façon dont il est stocké — UTF-8, UTF-16, UTF-32 — est une décision séparée, c'est pourquoi cet outil est distinct du convertisseur texte-vers-binaire.

Le piège de la paire de substitution

Les chaînes JavaScript sont en UTF-16. Les points de code au-dessus de U+FFFF sont stockés comme deux moitiés de 16 bits appelées paire de substitution. Un code naïf qui boucle avec charCodeAt voit un emoji comme deux valeurs sans signification autour de 0xD800-0xDFFF et rapporte "🐝".length comme 2. Ce convertisseur itère par point de code, donc l'emoji abeille produit une valeur, U+1F41D, et non deux moitiés cassées.

Les quatre formats de sortie

  • Entité décimale HTMLA. Fonctionne dans tout document HTML et en XML.
  • Entité hexadécimale HTMLA. La même chose en hexadécimal, ce qui correspond à la façon dont les tableaux Unicode sont écrits.
  • Échappement JavaScript\u0041. Pour les littéraux de chaîne dans le code source. Au-dessus de U+FFFF la forme entre accolades \u{1F41D} est requise, et l'outil l'émet automatiquement.
  • Notation par point de codeU+0041. La forme utilisée dans les spécifications et la documentation.

Usages pratiques

Échapper un texte non-ASCII en entités lui permet de survivre à des systèmes qui manglent les encodages, comme d'anciennes passerelles e-mail ou des bases de données mal configurées. L'inspection des points de code est aussi le moyen le plus rapide de diagnostiquer les caractères invisibles : un espace sans chasse (U+200B) ou un espace insécable (U+00A0) ressemble à un espace normal à l'écran mais casse les comparaisons de chaînes. Collez du texte suspect ici et la différence est immédiatement visible.

Note open-source : implémenté avec les API natives JavaScript String.prototype.codePointAt et String.fromCodePoint. Aucune bibliothèque tierce n'est utilisée.

FAQ

Pourquoi un emoji produit-il un seul U+1F41D au lieu de deux valeurs ?
L'outil itère par point de code plutôt que par unité de code UTF-16. Les emoji vivent au-dessus de U+FFFF, donc les boucles de caractères naïves les divisent en paires de substitution ; celui-ci ne le fait pas.
Quelle est la différence entre cet outil et le convertisseur texte-vers-binaire ?
Cet outil montre les points de code, l'identité abstraite de chaque caractère. L'outil binaire montre les octets UTF-8 utilisés pour les stocker. Un caractère peut être un point de code mais trois octets.
Puis-je décoder un mélange de formats ?
Oui. Le décodeur reconnaît &#..;, &#x..;, \uXXXX, \u{...} et U+.... dans la même entrée, et tout texte entre les échappements est préservé tel quel.
Comment trouver les caractères invisibles dans une chaîne ?
Collez-la et basculez vers la notation U+. Les espaces sans chasse apparaissent comme U+200B, les espaces insécables comme U+00A0, et les marques d'ordre des octets comme U+FEFF — tous invisibles à l'écran mais évidents ici.
Les entités HTML sont-elles sûres à mettre directement dans une page ?
Oui, les références de caractères numériques sont valides en HTML et en XML. Notez qu'elles n'échappent que les caractères eux-mêmes ; elles ne remplacent pas un échappement HTML correct de <, > et & dans un contenu non fiable.
Quelque chose quitte-t-il mon navigateur ?
Non. La conversion est une manipulation pure de chaîne effectuée localement.