draft: L'UTF-8 ne prend pas deux fois plus de place que l'encodage ISO-8859-15

This commit is contained in:
Cédrix
2026-05-16 19:12:52 +02:00
parent 20c76d6be8
commit 7a439577c7
2 changed files with 32 additions and 6 deletions
@@ -1,4 +1,5 @@
{
"title": "L'UTF-8 ne prend pas deux fois plus de place que l'encodage ISO-8859-15",
"_updated_at": "2026-05-16 17:12:00"
"_updated_at": "2026-05-16 17:12:52",
"slug": "20230206-l-utf-8-ne-prend-pas-deux-fois-plus-de-place-que-l-encodage-iso-8859-15"
}
@@ -1,11 +1,36 @@
# L'UTF-8 ne prend pas deux fois plus de place que l'encodage ISO-8859-15
L'encodage ISO-8859-15 utilise 1 octet (8 bits) pour représenter chaque caractère. Cela signifie qu'il peut représenter 256 caractères différents en utilisant un nombre limité d'octets. L'ISO-8859-15 est conçu pour couvrir les caractères utilisés dans les langues européennes occidentales, y compris le français, l'anglais, l'allemand et d'autres. Par conséquent, pour de nombreux textes dans ces langues, l'ISO-8859-15 peut suffire à représenter le contenu avec une taille raisonnable. Cependant, l'ISO-8859-15 n'est pas capable de représenter les caractères utilisés dans d'autres langues et peut ne pas être suffisant pour les applications qui nécessitent une plus grande variété de caractères.
Une idée reçue circule : passer d'ISO-8859-15 à UTF-8 doublerait la taille des fichiers texte. C'est faux. Voyons pourquoi.
L'UTF-8 peut utiliser de 1 à 4 octets (8 bits chacun) pour représenter un seul caractère. Cela signifie qu'il peut représenter plus de 1 million de caractères différents, ce qui en fait un encodage très flexible pour les applications qui nécessitent une variété de caractères pour différentes langues et scripts.
## ISO-8859-15 : un octet par caractère, mais 256 caractères seulement
L'UTF-8 utilise une "variable longueur" de codage, ce qui signifie qu'il peut utiliser autant d'octets pour représenter les caractères les plus courants, tels que ceux utilisés en français et en anglais. En conséquence, pour certains textes, l'UTF-8 peut prendre autent de place que d'autres encodages, tels que l'ISO-8859-15, mais pas plus. Cependant, pour d'autres textes qui utilisent un grand nombre de caractères non-ASCII, l'UTF-8 peut nécessiter plus d'espace pour les représenter.
L'ISO-8859-15 utilise exactement **1 octet (8 bits) par caractère**. Cela lui permet de représenter 256 caractères, ce qui suffit pour couvrir les langues d'Europe occidentale (français, anglais, allemand, espagnol, etc.).
Non, l'UTF-8 ne prend pas deux fois plus de place que l'encodage ISO-8859-15 de manière générale. En fait, l'UTF-8 peut prendre plus ou moins de place que l'ISO-8859-15, selon la complexité des caractères codés. L'UTF-8 est conçu pour prendre autant de place que l'ISO-8859-15 pour les caractères les plus courants, mais peut prendre plus de place pour les caractères plus rares ou complexes.
Cette compacité a un prix : l'ISO-8859-15 est incapable de représenter les caractères d'autres alphabets (cyrillique, arabe, chinois, emoji…). Pour toute application multilingue, il est inadapté.
L'UTF-8 peut utiliser jusqu'à 4 octets pour représenter un seul caractère, ce qui est plus que le 1 octet (8 bits) utilisé par l'ISO-8859-15. Cependant, l'UTF-8 est conçu pour être aussi compact que l'ISO-8859-15 pour les caractères courants, en utilisant autant d'octets pour les représenter. L'UTF-8 utilise une variable longueur de codage pour représenter les caractères. De plus, l'UTF-8 est conçu pour être compatible avec les codes ASCII, qui sont utilisés pour représenter les caractères les plus courants dans de nombreuses langues, y compris le français et l'anglais. En conséquence, pour de nombreux textes en français ou en anglais, l'UTF-8 peut effectivement prendre autant de place que l'ISO-8859-15, mais pas plus.
## UTF-8 : un codage à longueur variable
L'UTF-8 utilise **de 1 à 4 octets par caractère**, ce qui lui permet de représenter plus d'un million de caractères Unicode. Sa particularité tient à son codage à longueur variable :
- **1 octet** pour les caractères ASCII (a-z, A-Z, 0-9, ponctuation de base) ;
- **2 octets** pour les caractères latins accentués (é, à, ç, ü…) et la plupart des alphabets européens ;
- **3 octets** pour la majorité des autres scripts (chinois, japonais, arabe…) ;
- **4 octets** pour les caractères rares et les emoji.
L'UTF-8 est par ailleurs **rétro-compatible avec l'ASCII** : un fichier purement ASCII a exactement la même taille en UTF-8 qu'en ISO-8859-15.
## Et concrètement, pour un texte français ?
Pour un texte en français, la grande majorité des caractères sont en ASCII (lettres non accentuées, espaces, ponctuation) et n'occupent qu'**un seul octet en UTF-8**, comme en ISO-8859-15. Seuls les caractères accentués passent à 2 octets en UTF-8.
Comme les accents représentent une faible proportion du texte, le surcoût réel est généralement **de l'ordre de quelques pourcents**, et non d'un facteur deux.
## En résumé
Non, l'UTF-8 ne prend pas deux fois plus de place que l'ISO-8859-15. Selon le contenu :
- pour du texte **ASCII pur** : taille identique ;
- pour du **français courant** : surcoût marginal (quelques %) ;
- pour des langues à scripts non latins : surcoût plus marqué, mais c'est le prix de l'universalité.
Au regard de sa capacité à représenter l'ensemble des écritures du monde, l'UTF-8 reste un excellent compromis entre compacité et flexibilité — et le standard de fait du web moderne.