Qu'est-ce que l'UTF-8 et l'Unicode ? Points de code, encodage en octets et pourquoi l'UTF-8 s'est imposé
Publié le 11/03/2026 · 4 min de lecture · Outils pour développeurs
Daniel Okonkwo — Développeur front-end et rédacteur Tech chez OneKitly
Performance web · Formats de fichiers
Vérifié à partir de 2 sources
Unicode est un catalogue unique qui attribue à chaque caractère un nombre appelé point de code, écrit comme U+0041 pour A ou U+1F600 pour un smiley. L'UTF-8 est une règle pour stocker ces nombres en octets : les points de code jusqu'à U+007F tiennent sur un octet, les plus grands sur deux, trois ou quatre octets. L'UTF-8 s'est imposé car il est rétrocompatible avec l'ASCII, sans ambiguïté d'ordre des octets, et garde le texte anglais compact tout en représentant chaque écriture de la planète.
Unicode attribue à chaque caractère un point de code ; l'UTF-8 encode ces points de code en un à quatre octets. Voici son fonctionnement et pourquoi il a battu les alternatives.
Points de code contre octets
Il est utile de séparer deux idées. Un point de code est un nombre abstrait qui identifie un caractère dans le catalogue Unicode, indépendamment de son stockage. Un encodage est la recette concrète qui transforme ce nombre en octets sur le disque ou sur le réseau. Unicode définit actuellement des points de code de U+0000 à U+10FFFF, plus d'un million d'emplacements, dont environ 150 000 sont attribués.
La notation U+ n'est que de l'hexadécimal, base 16. U+0041 vaut 65 en décimal, la lettre A, et U+20AC vaut 8 364 en décimal, un symbole monétaire. Convertir entre la forme hexadécimale et le décimal ou le binaire est exactement le genre de changement de base que gère un convertisseur de bases, et c'est ainsi qu'on vérifie à la main quel motif d'octets un point de code doit produire.
De un à quatre octets, selon la taille
L'UTF-8 est un encodage à longueur variable. Les points de code de U+0000 à U+007F, la plage ASCII d'origine, sont stockés sur un seul octet dont le bit de poids fort est zéro, si bien que le texte anglais simple est identique octet pour octet aux anciens fichiers ASCII. Les points de code de U+0080 à U+07FF prennent deux octets, U+0800 à U+FFFF trois, et tout jusqu'à U+10FFFF, y compris la plupart des emoji, quatre.
L'octet de tête annonce la longueur par ses bits de poids fort : une séquence de deux octets commence par 110, de trois octets par 1110, de quatre octets par 11110, et chaque octet de continuation commence par 10. Ce motif autodescriptif permet à un décodeur de se resynchroniser après un octet corrompu et rend impossible de confondre un octet de continuation avec le début d'un caractère.
Pourquoi l'UTF-8 a battu les alternatives
Les principaux rivaux étaient l'UTF-16 et l'UTF-32. L'UTF-32 stocke chaque point de code sur quatre octets fixes, simple à indexer mais gaspilleur, quadruplant la taille d'un texte anglais ordinaire. L'UTF-16 utilise deux ou quatre octets et a jadis dominé Windows et Java, mais il lui faut une marque d'ordre des octets pour dire quel bout vient d'abord et il utilise encore des paires de substitution pour les grands points de code, réintroduisant la longueur variable qu'il voulait éviter.
L'UTF-8 évite tout cela. Il a un ordre d'octets canonique unique, ne nécessite aucune marque et reste compatible octet avec l'immense parc d'outils ASCII, si bien qu'un fichier UTF-8 rempli d'anglais simple s'ouvre correctement dans un logiciel antérieur à Unicode. Ces vertus pratiques, et non un décret de comité, en ont fait le défaut du web, où il couvre désormais l'écrasante majorité des pages.
Questions fréquentes
- L'UTF-8 est-il la même chose qu'Unicode ?
- Non. Unicode est le catalogue qui attribue à chaque caractère un point de code. L'UTF-8 est une façon d'encoder ces points de code en octets. Unicode dit quel est le nombre ; l'UTF-8 dit comment le stocker.
- Combien d'octets un emoji utilise-t-il en UTF-8 ?
- La plupart des emoji simples se trouvent au-dessus de U+FFFF et prennent quatre octets. Certains emoji visibles sont en réalité plusieurs points de code reliés par des jointeurs de largeur nulle, si bien qu'ils peuvent occuper bien plus d'octets qu'un caractère ne le laisse croire.
- Pourquoi mon texte affiche-t-il des caractères illisibles comme é ?
- C'est une inadéquation : des octets écrits en UTF-8 sont lus comme un encodage sur un octet tel que Latin-1, si bien qu'une séquence de deux octets apparaît comme deux caractères erronés. Déclare et lis le fichier en UTF-8 des deux côtés pour corriger.
- L'UTF-8 grossit-il les fichiers pour du texte non anglais ?
- Parfois. Les langues à écriture latine restent proches d'un octet par caractère, mais des écritures comme le chinois ou le japonais utilisent trois octets par caractère en UTF-8 contre deux en UTF-16. Pour un contenu mixte ou majoritairement latin, l'UTF-8 est généralement le plus compact au total.
Articles qui pourraient t'intéresser
Tous les guides →Outils similaires
Sources
Tu as repéré une erreur dans cet article ?