Convertisseur Unicode
Convertir entre texte et encodage Unicode avec plusieurs formats de sortie
Détails des points de code (cliquez pour copier)
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
- Entrez ou collez le texte à convertir dans la zone de saisie
- Sélectionnez la direction de conversion : Texte vers Unicode ou Unicode vers Texte
- Choisissez le format de sortie : \uXXXX ou U+XXXX (disponible lors de l'encodage)
- 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
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 retrouverDé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 CJKFAQ
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é.