ToolActToolAct

Convertisseur Unicode

Convertir entre texte et encodage Unicode avec plusieurs formats de sortie

Entrée
Caractères: 0
Points de code: 0
Sortie
Caractères: 0

Détails des points de code (cliquez pour copier)

Entrez du texte pour afficher les points de code de chaque caractère

Qu'est-ce qu'Unicode ?

Unicode est une norme industrielle en informatique qui encode la plupart des systèmes d'écriture du monde. Chaque caractère Unicode possède un numéro unique appelé Point de code, généralement représenté en hexadécimal avec le préfixe U+, comme U+4E2D pour le caractère chinois « 中 ». L'outil de conversion Unicode peut convertir du texte en divers formats de représentation Unicode, et également restaurer du texte à partir d'un encodage Unicode. Unicode décrit les caractères par points de code, tandis que les encodages comme UTF-8 définissent comment ces points sont stockés en octets. C’est important pour analyser emoji, accents, caractères CJK, symboles, caractères de contrôle ou écritures mixtes. Un caractère visible peut contenir plusieurs points de code, notamment avec marques combinantes, sélecteurs de variation ou séquences emoji. L’outil aide à déboguer mojibake, normalisation, échappements, caractères invisibles et écarts entre nombre de caractères et longueur en octets.

Comment utiliser

Étapes

  1. Entrez ou collez le texte à convertir dans la zone de saisie
  2. Sélectionnez la direction de conversion : Texte vers Unicode ou Unicode vers Texte
  3. Choisissez le format de sortie : \uXXXX ou U+XXXX (disponible lors de l'encodage)
  4. Les résultats apparaissent automatiquement, copie en un clic ou échange entrée/sortie

Notes sur l'encodage

  • Les formats d'échappement Unicode sont utiles pour le code et le débogage, mais ils peuvent réduire la lisibilité pour un texte courant.
  • Lors du décodage, vérifiez les paires de substitution et la sortie des émojis ; séparer une paire peut produire des caractères cassés.

Cas d’utilisation

Encoder du texte en séquences d’échappement UnicodeConvertissez du texte en séquences \uXXXX de style JavaScript ou en notation de points de code U+XXXX. Les caractères au-delà de U+FFFF sont représentés comme paires de substitution en mode échappement tandis que la grille de détail affiche leur point de code complet. La conversion est une opération locale String.prototype.codePointAt et fromCodePoint, les données restent dans le navigateur tant que vous ne copiez pas la sortie vous-même.
Décoder des échappements Unicode en texte lisibleDécodez les motifs \uXXXX, \u{ } et U+XXXX en caractères, puis copiez le texte restauré. Pratique pour inspecter des journaux, des chaînes JSON, des fichiers de localisation et des fragments échappés provenant de code ou d’API. Le décodage passe par fromCharCode et fromCodePoint dans la page, la chaîne source et les caractères reconstruits ne quittent jamais l’onglet.
Inspecter les points de code individuelsChaque caractère de la saisie est listé avec son caractère visible et sa valeur U+ ; cliquer sur une tuile copie ce point de code. Le nombre de caractères et le nombre de points de code sont affichés séparément, ce qui compte pour les emoji et autres caractères multi-unités. La grille étant construite par itération sur la chaîne en mémoire, la carte complète des points de code est rendue localement sans envoyer le texte à un service tiers.
Détecter les mojibake et les chaînes doublement encodéesCollez des chaînes comme ‘é’ ou ‘中文’, décodez-les, puis ré-encodez avec l’encodage suspecté (UTF-8 vs Latin-1) pour confirmer si la source était doublement encodée ou simplement corrompue à la capture. L’inspection est purement côté navigateur : TextDecoder, itération des points de code et ré-encodage se font dans la page.
Compter les emoji et marques combinantes comme points de codeUtilisez la grille de points de code pour repérer les emoji de famille, les séquences de drapeaux et les diacritiques combinants qui occupent plusieurs emplacements. Le décompte séparé en caractères et en points de code explique pourquoi une chaîne de ‘1 caractère’ peut consommer 7 unités UTF-16. Le comptage étant local, même les chaînes au contenu sensible peuvent être dimensionnées pour des colonnes de base de données ou des budgets de format sans quitter le navigateur.

Principe technique

La norme Unicode (ISO/IEC 10646) attribue un point de code numérique unique à chaque caractère réparti sur 17 plans (U+0000 à U+10FFFF). Le Plan multilingue de base (BMP, plan 0) couvre U+0000–U+FFFF et contient la quasi-totalité des systèmes d'écriture modernes, y compris les sinogrammes unifiés CJK. Les plans supplémentaires (1–16) hébergent des écritures historiques, des caractères CJK rares, des émojis et des caractères à usage spécial. L'outil convertit du texte lisible en deux représentations orientées machine : les séquences d'échappement \uXXXX de style JavaScript et la notation standard U+XXXX. UTF-16 est l'encodage interne des chaînes JavaScript — chaque caractère du BMP est stocké en une seule unité de code 16 bits égale à son point de code, tandis que les caractères supplémentaires (U+10000 et au-delà) sont encodés en paires de substitution : 0x10000 est soustrait du point de code pour laisser une valeur de 20 bits, qui est ensuite séparée en un substitut haut de 10 bits (0xD800 + ((cp - 0x10000) >> 10)) et un substitut bas de 10 bits (0xDC00 + ((cp - 0x10000) & 0x3FF)). Le mode encodage de l'outil détecte les points de code supplémentaires via String.prototype.codePointAt() et génère le double échappement \u correct pour le format \uXXXX. Pour le format U+XXXX, le point de code complet est affiché directement. Le mode décodage analyse trois syntaxes : \uXXXX (quatre chiffres hexadécimaux, BMP uniquement), \u{XXXXX} (syntaxe ES6 avec accolades prenant en charge la totalité de la plage Unicode) et U+XXXX (notation standard avec hexadécimal de longueur variable). L'expression rationnelle /\\u\{([0-9a-fA-F]+)\}/g gère les échappements avec accolades et les transmet à String.fromCodePoint(), tandis que /\\u([0-9a-fA-F]{4})/g gère les échappements traditionnels via String.fromCharCode(). Le mélange des deux reconstruit correctement les paires de substitution lorsqu'un caractère supplémentaire a été encodé en deux échappements \u. L'encodage UTF-8 est pertinent car il détermine la longueur en octets : un caractère du BMP comme « 中 » (U+4E2D) s'encode en 3 octets UTF-8 (E4 B8 AD), tandis qu'un émoji comme « 😀 » (U+1F600) nécessite 4 octets (F0 9F 98 80). Le compteur de caractères de l'outil distingue le nombre de points de code et le nombre d'unités de code UTF-16 — une distinction utile lors du débogage des limites de longueur dans les bases de données, les API ou les champs de formulaire qui comptent les unités de code plutôt que les caractères.

  • Itération sur les points de code : String.prototype.codePointAt(pos) renvoie correctement le point de code complet pour les caractères supplémentaires, contrairement à charCodeAt() qui ne renvoie que le substitut haut — l'outil utilise l'opérateur de décomposition [...str] pour itérer par point de code, ce qui appelle en interne le protocole d'itération des chaînes.
  • Calcul des paires de substitution : pour un point de code supplémentaire CP > 0xFFFF, le substitut haut vaut Math.floor((CP - 0x10000) / 0x400) + 0xD800 et le substitut bas vaut ((CP - 0x10000) % 0x400) + 0xDC00 — le mode encodage applique cette formule pour produire des paires \uD800\uDC00 valides.
  • Pipeline regex de décodage : trois motifs s'exécutent séquentiellement — \u{XXXXX} (accolades ES6) → \uXXXX (hexadécimal à quatre chiffres) → U+XXXX (notation standard) — avec fromCodePoint() gérant les chemins accolades et U+, et fromCharCode() gérant le chemin traditionnel à quatre chiffres.
  • Structure des octets UTF-8 : les caractères du BMP utilisent 1 à 3 octets UTF-8 (ASCII = 1 octet, supplément latin = 2 octets, CJK = 3 octets) ; les caractères supplémentaires utilisent 4 octets selon le motif 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx — le compteur d'octets de l'outil utilise new Blob([str]).size pour une mesure précise.
  • Point de code vs unité de code : un seul caractère visible peut occuper plusieurs points de code (par ex. é peut être U+00E9 ou U+0065 + U+0301 accent aigu combinant) — l'outil affiche à la fois charCount (unités de code UTF-16) et codepointCount (valeurs scalaires Unicode) pour mettre en évidence cette différence.
  • Vue d'ensemble des plans Unicode : plan 0 (BMP) = écritures modernes, plan 1 (SMP) = historique + émojis + mathématiques, plan 2 (SIP) = CJK rares, plan 14 (SSP) = balises + sélecteurs de variation, plans 15–16 = usage privé — le mode encodage gère correctement tous les plans via codePointAt().
  • Notation \u vs U+ : \uXXXX est la séquence d'échappement JavaScript/Java/C (BMP uniquement sans accolades) ; U+XXXX est la notation canonique du Consortium Unicode (minimum 4 chiffres hexadécimaux, pas de limite supérieure) — le basculement de format de l'outil passe entre ces deux représentations.

Exemples

Échappement Unicode du chinois

Entrée: 你好世界 (4 caractères CJK, 12 octets UTF-8)
Sortie: \u4f60\u597d\u4e16\u754c
Note :  uniquement les points de code BMP ; utile dans les chaînes JSON, les littéraux JavaScript et les fichiers de log

Échappement d'emoji en paire de substitution

Entrée: 😀🎉 (2 emojis, chacun au-dessus de U+FFFF)
Sortie: \uD83D\uDE00\uD83C\uDF89
Note :  les caractères hors BMP sont encodés en paire de substitution UTF-16 ; les anciens moteurs JS nécessitent String.fromCodePoint pour les retrouver

Décodage des échappements Unicode

Entrée: \u4e2d\u6587\u6d4b\u8bd5
Sortie: 中文测试
Note :  collez la chaîne échappée et l'outil inverse l'encodage ; vérifiez que les octets de sortie correspondent à la source lors du débogage de payloads CJK

FAQ

Que montre cet outil pour chaque caractère ?

Point de code (décimal et hex), nom de bloc (par ex. Basic Latin, CJK Unified Ideographs), catégorie (Lettre, Nombre, Symbole, Ponctuation, etc.), nom Unicode, ainsi que les représentations en octets UTF-8 / UTF-16 / UTF-32. Utile pour déboguer les bugs d'encodage et pour choisir le bon caractère.

Quelle est la différence entre UTF-8, UTF-16 et UTF-32 ?

Les trois encodent les mêmes caractères Unicode. UTF-8 utilise 1 à 4 octets par point de code et est compatible octet à octet avec ASCII (l'encodage dominant du web). UTF-16 utilise 2 ou 4 octets (utilisé en interne par JavaScript et Windows). UTF-32 utilise toujours 4 octets (rarement vu sur le réseau, courant en mémoire).

Pourquoi « 𝓗 » s'affiche-t-il comme deux unités de code UTF-16 ?

Les points de code au-dessus de U+FFFF (le Plan Multilingue de Base) sont encodés en « paire de substitution » (surrogate pair) en UTF-16 : deux moitiés 16 bits. string.length de JavaScript les compte comme 2 ; Array.from(str) les traite comme un seul. La page affiche les deux vues afin de déboguer les surprises de comptage de longueur.

Qu'est-ce qu'une forme de normalisation (NFC/NFD/NFKC/NFKD) ?

Unicode autorise plusieurs représentations d'un même texte visible — é peut être un point de code (U+00E9) ou e + accent aigu combinant (U+0065 U+0301). NFC les compose ; NFD les décompose. NFKC/NFKD plient en plus les caractères de compatibilité (½ → 1/2). Normalisez toujours avant comparaison de chaînes ou hachage.

Pourquoi les emojis apparaissent-ils parfois en carrés ?

La police de votre navigateur ne contient pas ce glyphe. Les emojis modernes utilisent des séquences ZWJ (par ex. 👨‍👩‍👧 = homme + ZWJ + femme + ZWJ + fille) qui nécessitent des polices spécifiques pour s'afficher comme une seule image ; les polices anciennes affichent trois emojis distincts ou des carrés.

Comment rechercher un caractère par nom ?

Tapez le nom (ou une partie) dans le champ de recherche. Les noms suivent la liste officielle des noms Unicode (LATIN SMALL LETTER A, GREEK CAPITAL LETTER OMEGA, MUSICAL SYMBOL G CLEF). Les emojis courants ont aussi un « CLDR short name » que la page reconnaît.

Ma saisie est-elle téléversée ?

Non. Les recherches utilisent une base de données Unicode dans le navigateur. Rien n'est téléversé.