| Liste Articles: [0-A] [A-C] [C-F] [F-J] [J-M] [M-P] [P-S] [S-Z] | Liste Catégories | Une page au hasard | Pages liées | ||||||
UTF-8 (UCS transformation format (8 bits)) est format d'encodage de caractères défini pour l'ensemble des caractères Unicode (UCS). Chaque caractère est codé sur une suite de un à quatre octets.
UTF-8 est standardisé dans la RFC 3629 (UTF-8, a transformation format of ISO 10646). Le codage est aussi défini dans le rapport technique 17 de la norme . L'IETF requiert qu'UTF-8 soit supporté par les protocoles de communication d'Internet échangeant du texte.
| Sommaire |
En résumé les 128 premiers caractères sont codés à l'aide d'un seul octet. Le premier commence avec le premier bit à 0. Sinon, le premier octet débute avec 11, le nombre de bits à 1 indiquant le nombre d'octets et les octets suivants débutent avec 10. Le codage est résumé ci-dessous :
Ainsi en se plaçant n'importe où dans un document codé en UTF-8, il est aisé de savoir si on est au début ou au milieu d'un caractère et de retrouver le début du caractère. Il s'agit d'un codage préfixe, auto-synchronisant.
Avec un afficheur/éditeur ne comprenant pas le codage UTF-8, les caractères ASCII d'un document ainsi codé s'affichent toujours correctement.
| caractère | code numérique | octets UTF-8 |
|---|---|---|
| A | 65 | 01000001 |
| é | 233 | 11000011 10101001 |
| € | 8364 | 11100010 10000010 10101100 |
| 𝄞 | 119070 | 11110000 10011101 10000100 10011110 |
Le premier octet d'une séquence permet d'en déterminer la longueur. Il suffit de compter le nombre de bits valant un au début. Il est donc possible d'extraire n'importe quelle partie d'une chaîne de caractères sans risque de couper au milieu d'un caractère. Une séquence décrivant un caractère n'apparaît jamais dans une séquence plus longue décrivant un autre caractère comme c'est le cas avec Shift-JIS par exemple.
Un caractère UTF-8 a une taille variable, ce qui rend certaines opérations sur les chaînes plus compliquées : calcul du nombre de caractères, positionnement à une distance donnée dans un fichier texte, et en règle général toute opération nécessitant l'accès au n-iéme caractères d'une chaîne sans avoir à parcourir toute la chaîne.
Les idéogrammes (kanji, par exemple) utilisent 3 octets en UTF-8 contre 2 octets en UTF-16. Les textes chinois, coréens et japonais y occupent donc plus de place.
Un programme mal écrit peut accepter un certain nombre de représentations UTF-8 et les convertir comme un seul et même caractère. Ceci pose un problème de sécurité, en effet l'analyseur syntaxique peut avoir besoin de rejeter une certaine chaîne de caractères, par exemple un séquence prohibée pourrait être « /../ » encodé en ASCII (notation hexadécimal) « 2F 2E 2E 2F » mais le principe de l'encodage UTF-8 permet de l'encoder aussi avec « 2F C0 AE 2E 2F ». Si l'analyseur syntaxique n'est pas soigneusement écrit pour rejeter aussi cette chaîne, une brèche potentielle de sécurité est ouverte. Cet exemple est tiré d'un cas réel de virus attaquant des serveurs HTTP du Web en 2001.
UTF-8 a été inventé par Ken Thompson lors d'un dîner avec Rob Pike aux alentours de septembre 1992. Il a été immédiatement utilisé dans le système d'exploitation Plan-9 sur lequel ils travaillaient. Une des contrainte à résoudre était que les caractères nul et '/', qui ont une signification spéciale pour de nombreux systèmes d'exploitation, étaient codés de la même façon qu'en ASCII et qu'il n'apparaissent pas dans un octet d'un caractère multi-octets.
[ UTF-16 | UTF-32 | Unicode | ASCII | ISO 8859-1 | Wikipédia:Caractères spéciaux ]


