Centre d‘Information

UTF-8

Le format UTF-8 est le format de codage le plus courant pour les caractères Unicode. Un caractère codé UTF-8 nécessite variable de 1 à 4 octets. UTF-8 est optimisé pour le stockage de caractères ASCII. Dans la plage ASCII avec des valeurs de 0 à 127 dans le codage UTF-8, un seul octet par caractère est utilisé. La valeur de cet octet est identique à celle du codage ASCII. Par conséquent, le codage UTF-8 est particulièrement adapté aux textes composés principalement de caractères ASCII ou ANSI et ne contenant que quelques autres caractères, comme c’est le cas par exemple en anglais ou dans la plupart des langues européennes.

Alors que les 128 premiers caractères (ASCII) nécessitent un octet pour le codage, les 1920 prochains caractères nécessitent deux octets. Ces caractères sont des caractères latins avec des signes diacritiques tels que les umlauts allemands (Ä, Ö ..) ou les lettres grecques et cyrilliques. Quatre octets ne sont utilisés que pour les caractères rarement utilisés, tels que les caractères inhabituels chinois, japonais et coréens.

Usage

Surtout sur Internet et dans les domaines de la transmission de données, le codage UTF-8 est devenu de plus en plus important ces dernières années. Ce développement a été soutenu par le World Wide Web Consortium, qui recommande UTF-8 comme encodage par défaut pour XML et HTML, ou par Internet Engineering Task Force, qui exige que tous les nouveaux protocoles Internet prennent en charge UTF-8. Actuellement, plus de 97% de toutes les pages Internet sont encodées en UTF-8, ce qui fait de l'UTF-8 l'encodage le plus répandu sur le Web. Les caractères nommés (entités HTML; HTML entities), autrefois très répandus, disparaissent également de plus en plus des textes sources des pages Internet et sont aujourd'hui remplacés par des caractères encodés en UTF-8.

En revanche, UTF-8 est moins utilisé dans les programmes. Par exemple, Windows utilise UTF-16 en interne.

Avantages et Inconvénients

L'un des principaux avantages de l'UTF-8 est le faible besoin de mémoire des caractères préférés. Lors du stockage d'un texte anglais composé uniquement des caractères A-Z, a-z, 0-9 et des signes de ponctuation courants, UTF-8 nécessite deux fois moins d'espace de stockage que UTF-16 et même seulement un quart de l'espace de stockage de UTF-32. UTF-8 gère avec un seul octet pour ces caractères, tandis que UTF-32 nécessite toujours quatre octets par caractère et UTF-16 au moins deux octets. Néanmoins, tous les caractères peuvent être mappés avec UTF-8, ce qui n'est pas possible avec d'autres encodages tels que ASCII ou ANSI, qui ne nécessitent également qu'un octet pour leurs caractères.

Un inconvénient de UTF-8 est la taille plus grande lorsque de nombreux caractères non préférés sont utilisés, c’est-à-dire des caractères qui nécessitent 3 ou 4 octets. Dans de tels cas, d’autres encodages seraient plus efficaces en termes d’espace.

Un autre inconvénient est qu'en raison du nombre variable d'octets par caractère, il n'est pas facile d'accéder à un caractère spécifique dans le texte, et la longueur d'un texte encodé en UTF-8 n'est pas facile à déterminer. Dans les deux cas, tous les octets doivent d'abord être parcourus et interprétés individuellement. Dans les encodages tels que UTF-32, c'est beaucoup plus facile: comme chaque caractère a exactement 4 octets, la longueur d'un texte peut être déterminée directement en fonction du nombre d'octets (octets / 4) et il est également possible de passer directement à la nième caractère du texte sans connaître le texte car la position d'octet de départ peut être obtenue automatiquement à partir de quatre fois la position du caractère.

Byte Order Mark

La Byte Order Mark (BOM) de UTF-8 est la séquence d’octets EF BB BF, qui peut apparaître sous la forme des caractères  si le programme ne peut pas traiter l’UTF-8. Le problème de l’ordre des octets ne se pose pas dans le codage UTF-8, mais il est préférable d’utiliser une nomenclature pour caractériser le codage utilisé. Cependant, une différenciation n’est pas claire à 100%, car bien entendu, dans le format ANSI, des chaînes telles que  sont autorisées et peuvent se produire en théorie au moins au début du fichier.