Ce qu’est l’UTF-8
Tout texte sur un ordinateur est stocké sous forme de nombres. Unicode est la liste de référence qui donne à chaque caractère un numéro, appelé point de code. La lettre A est U+0041, é est U+00E9 et le signe euro € est U+20AC. L’UTF-8 est la règle qui transforme ces points de code en octets.
L’UTF-8 est l’encodage standard du web, du JSON, de la plupart des langages de programmation et des systèmes d’exploitation modernes. Son grand avantage est que le texte ASCII simple ne change pas : A reste l’octet unique 41. Les autres caractères utilisent deux, trois ou quatre octets, et chacun de ces octets vaut 128 ou plus, si bien qu’ils ne peuvent jamais être confondus avec de l’ASCII.
Comment utiliser l’outil UTF-8
Encoder. Tapez dans la zone Texte. Les octets UTF-8 apparaissent dans la zone Octets UTF-8. Appuyez sur Copier pour les récupérer.
Décoder. Collez des octets dans la zone Octets UTF-8. Les caractères apparaissent à gauche. Vérifiez que le Format des octets correspond à ce que vous collez.
Format des octets propose six façons d’écrire les octets :
- Octets hexa : C3 A9 pour lire et déboguer
- Échappements : \xC3\xA9 pour les chaînes littérales dans le code
- Pourcent : %C3%A9 comme dans les adresses web
- Décimal : 195 169 pour les tableaux d’octets
- Binaire : 11000011 10101001 pour comprendre la disposition des bits
- Texte abîmé : é (réparer le mojibake) pour réparer un texte lu avec le mauvais encodage
Caractère par caractère. Le tableau sous l’outil liste chaque caractère avec son point de code, ses octets UTF-8 et son nombre d’octets. Le résumé affiche le nombre total de caractères et d’octets. Les espaces, tabulations et sauts de ligne sont nommés pour que vous puissiez les voir.
Comment fonctionne l’UTF-8
Le nombre d’octets dépend de la taille du point de code :
| Points de code | Octets | Motif de bits |
|---|---|---|
| U+0000 à U+007F | 1 | 0xxxxxxx |
| U+0080 à U+07FF | 2 | 110xxxxx 10xxxxxx |
| U+0800 à U+FFFF | 3 | 1110xxxx 10xxxxxx 10xxxxxx |
| U+10000 à U+10FFFF | 4 | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
Le premier octet indique combien d’octets suivent. Chaque octet suivant commence par 10. L’UTF-8 est ainsi autosynchronisant : un programme peut toujours retrouver le début du caractère suivant, même au milieu d’un flux.
Exemples
| Caractère | Point de code | UTF-8 hexa | Décimal |
|---|---|---|---|
A |
U+0041 | 41 |
65 |
é |
U+00E9 | C3 A9 |
195 169 |
ñ |
U+00F1 | C3 B1 |
195 177 |
ß |
U+00DF | C3 9F |
195 159 |
ç |
U+00E7 | C3 A7 |
195 167 |
€ |
U+20AC | E2 82 AC |
226 130 172 |
日 |
U+65E5 | E6 97 A5 |
230 151 165 |
| emoji pouce levé | U+1F44D | F0 9F 91 8D |
240 159 145 141 |
Réparer le mojibake
Le mojibake est le charabia qui apparaît quand des octets UTF-8 sont lus en Windows-1252 ou en Latin-1. Chaque octet devient un caractère à part, donc les lettres sur deux octets deviennent deux symboles bizarres. Les textes français y sont particulièrement exposés, à cause de leurs nombreux accents :
| Texte correct | Vu comme |
|---|---|
café |
café |
naïve |
naïve |
It’s |
It’s |
€ |
€ |
été |
été |
ça |
ça |
Noël |
Noël |
œuf |
œuf |
Le à donne un cas piégeux : son second octet, A0, correspond à une espace insécable en Windows-1252, donc « déjà » devient « déjà » suivi d’une espace presque invisible.
Le format Texte abîmé annule cette erreur. Il retransforme chaque caractère abîmé en son octet et décode les octets en UTF-8. Si le texte contient des caractères qui ne peuvent pas venir de cette erreur, l’outil vous le signale au lieu de deviner.
Conseils et limites
- Enregistrez vos fichiers en UTF-8. La plupart des mojibakes commencent par un fichier enregistré dans un encodage et ouvert dans un autre. Dans les éditeurs, choisissez UTF-8 à l’enregistrement.
- Déclarez l’encodage. En HTML, placez
<meta charset="utf-8">en haut de la page. - Excel et fichiers CSV. Les anciennes versions d’Excel devinent l’encodage d’un CSV, et un Excel en français choisit souvent Windows-1252. Enregistrer en « CSV UTF-8 » évite les accents cassés.
- La réparation fonctionne une fois. Un texte abîmé deux fois (« café ») demande deux réparations successives.
- Le tableau affiche jusqu’à 500 caractères pour garder la page rapide. Le nombre d’octets couvre toujours tout le texte.
Autres méthodes
Python. 'café'.encode('utf-8') renvoie b'caf\xc3\xa9'. Pour réparer un mojibake, 'café'.encode('cp1252').decode('utf-8') renvoie café.
JavaScript. new TextEncoder().encode('é') renvoie les octets 195 et 169. new TextDecoder().decode(bytes) les retransforme.
Ligne de commande. echo -n é | xxd montre les octets c3a9 dans un terminal UTF-8. iconv -f WINDOWS-1252 -t UTF-8 convertit des fichiers entiers.
Outils associés
Pour décoder des octets hexa simples, utilisez le convertisseur hexadécimal en texte. Les octets encodés en pourcent dans les liens sont traités par l’outil pour décoder une URL. Pour voir tous les bits, essayez le traducteur de code binaire.