UTF-8

UTF-8

UTF-8 (UCS transformation format 8 bits) est un format de codage de caractères. Chaque caractère ou graphème est représenté dans le répertoire du jeu universel de caractères sous la forme d’une suite d’un ou plusieurs « caractères abstraits », repérés chacun par leur position dans ce répertoire, position appelée « point de code ». En UTF-8, chaque point de code est ensuite codé de façon unique sur une suite d’un à quatre octets. Ce format de transformation a été conçu pour être compatible avec de nombreux logiciels originellement prévus pour traiter des caractères codés sur un seul octet.

Note : le concept de « point de code » (en anglais code point) utilisé dans cet article est un concept avec une terminologie bien définie (en anglais pour la norme Unicode, et à la fois en anglais et en français dans la norme ISO/CEI 10646). Il est indépendant du codage de caractères effectivement utilisé (ici l'UTF-8) et fait référence directement et de façon non ambiguë au répertoire universel de caractères codés (voir Table des caractères Unicode, pour un définition précise des notions de « point de code » et de « plan », nécessaires à la pleine compréhension du présent article).

UTF-8 est un « format de transformation » de la norme ISO/CEI 10646, c'est à dire que UTF-8 définit un codage pour tout point de code scalaire (caractère abstrait ou « non-caractère ») du répertoire du jeu universel de caractères codés (Universal Character Set, ou UCS). Ce répertoire est aujourd’hui commun à la norme ISO/CEI 10646 (depuis sa révision 1) et au standard Unicode (depuis sa version 1.1).

UTF-8 est officiellement défini dans la norme ISO/CEI 10646 depuis son adoption dans un amendement publié en 1996. Il fut aussi décrit dans le standard Unicode et fait partie de ce standard depuis la version 3.0 publiée en 2000. En 1996 fut publiée la RFC 2044 (« UTF-8, a transformation format of ISO 10646 ») dans le but de fournir une spécification accessible d'UTF-8 et d'entamer sa standardisation au sein de l’Internet Engineering Task Force (IETF). Cette RFC fut révisée en 1998 (RFC 2279) puis finalement en 2003 (RFC 3629), cette dernière version faisant d'UTF-8 un des standards de l'internet (STD 63).

L’IETF exige maintenant qu’UTF-8 soit pris en charge par défaut (et non pas simplement supporté en tant qu’extension) par tous les nouveaux protocoles de communication d’Internet (publiés dans ses RFC numérotées) qui échangent du texte (les plus anciens protocoles n’ont toutefois pas été modifiés pour rendre ce support obligatoire, mais seulement étendus si possible, pour le supporter de façon optionnelle, si cela produit des incompatibilités ou introduit de nouveaux risques de sécurité : c’est le cas de protocoles Internet très utilisés comme DNS, HTTP, FTP, Telnet et de HTML dans ses versions initiales non normalisées par le W3C).

Sommaire

Description

Le numéro (valeur scalaire) de chaque point de code dans le jeu universel de caractères (UCS) est donné par la norme ISO/CEI 10646 qui assigne un point de code à chaque caractère valide, puis permet leur codage en leur attribuant une valeur scalaire identique au point de code ; cette norme est reprise dans le standard Unicode (qui utilise depuis la version 1.1 le même répertoire).

Tous les « points de code » (code points en anglais) de U+0000 à U+D7FF et de U+E000 à U+10FFFF sont représentables en UTF-8 (mêmes ceux attribués à des « non-caractères » (non character) et tous ceux qui ne sont pas encore attribués), et uniquement ceux-là. Les seuls points de codes valides dans l’espace de l’UCS et qui ne doivent pas être représentés dans UTF-8 sont ceux attribués aux « demi-codets » (surrogates en anglais), car ils ne sont pas représentables de façon bijective dans le codage UTF-16 et ne sont pas non plus par eux-mêmes des caractères : contrairement aux autres points de codes, les demi-codets n’ont donc pas de « valeur scalaire » (scalar value en anglais) définie.

Les caractères ayant une valeur scalaire de 0 à 127 (point de code attribué de U+0000 à U+007F) sont codés sur un seul octet dont le bit de poids fort est nul.

Les points de code de valeur scalaire supérieure à 127 sont codés sur plusieurs octets. Les bits de poids fort du premier octet forment une suite de 1 de longueur égale au nombre d'octets utilisés pour coder le caractère, les octets suivants ayant 10 comme bits de poids fort.

Définition du nombre d'octets utilisés
Représentation binaire UTF-8 Signification
0xxxxxxx 1 octet codant 1 à 7 bits
110xxxxx 10xxxxxx 2 octets codant 8 à 11 bits
1110xxxx 10xxxxxx 10xxxxxx 3 octets codant 12 à 16 bits
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 4 octets codant 17 à 21 bits

Ce principe pourrait être étendu jusqu’à huit octets pour un seul point de code, mais UTF-8 pose la limite à quatre[1].

Le codage interdit la représentation des points de code réservés aux demi-codets (qui n’ont pas de valeur scalaire définie, afin de préserver la compatibilité avec UTF-16 qui ne permet pas non plus de les représenter). Mais il autorise cependant la représentation des points de code assignés à des non-caractères (alors même que leur présence est interdite dans un texte conforme).

Exemples

Exemples de codage UTF-8
Type Caractère Point de code
(hexadécimal)
Valeur scalaire Codage UTF-8
décimal binaire binaire hexadécimal
Contrôles [NUL] U+0000 0 0000000 00000000 00
[US] U+001F 31 0011111 00011111 1F
Texte [SP] U+0020 32 0100000 00100000 20
A U+0041 65 1000001 01000001 41
~ U+007E 126 1111110 01111110 7E
Contrôles [DEL] U+007F 127 1111111 01111111 7F
[PAD] U+0080 128 00010 000000 11000010 10000000 C2 80
[APC] U+009F 159 00010 011111 11000010 10011111 C2 9F
Texte [NBSP] U+00A0 160 00010 100000 11000010 10100000 C2 A0
é U+00E9 233 00011 101001 11000011 10101001 C3 A9
߿ U+07FF 2047 11111 111111 11011111 10111111 DF BF
U+0800 2048 0000 100000 000000 11100000 10100000 10000000 E0 A0 80
U+20AC 8 364 0010 000010 101100 11100010 10000010 10101100 E2 82 AC
U+D7FF 55 295 1101 011111 111111 11101101 10011111 10111111 ED 9F BF
Demi-codets U+D800 (néant) (codage interdit)
U+DFFF
Usage privé [] U+E000 57 344 1110 000000 000000 11101110 10000000 10000000 EE 80 80
[] U+F8FF 63 743 1111 100011 111111 11101111 10100011 10111111 EF A3 BF
Texte U+F900 63 744 1111 100100 000000 11101111 10100100 10000000 EF A4 80
U+FDCF 64 975 1111 110111 001111 11101111 10110111 10001111 EF B7 8F
Non-caractères U+FDD0 64 976 1111 110111 010000 11101111 10110111 10010000 EF B7 90
U+FDEF 65 007 1111 110111 101111 11101111 10110111 10101111 EF B7 AF
Texte U+FDF0 65 008 1111 110111 110000 11101111 10110111 10110000 EF B7 B0
U+FFFD 65 533 1111 111111 111101 11101111 10111111 10111101 EF BF BD
Non-caractères U+FFFE 65 534 1111 111111 111110 11101111 10111111 10111110 EF BF BE
U+FFFF 65 535 1111 111111 111111 11101111 10111111 10111111 EF BF BF
 
Texte

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article UTF-8 de Wikipédia en français (auteurs)

Regardez d'autres dictionnaires:

  • UTF-8 — (8 bit Unicode Transformation Format) es un formato de codificación de caracteres Unicode e ISO 10646 utilizando símbolos de longitud variable. UTF 8 fue creado por Robert C. Pike y Kenneth L. Thompson. Está definido como estándar por la RFC 3629 …   Wikipedia Español

  • UTF-7 — (7 bit Unicode Transformation Format) is a variable length character encoding that was proposed for representing Unicode text using a stream of ASCII characters. It was originally intended to provide a means of encoding Unicode text for use in… …   Wikipedia

  • UTF-8 — (от англ. Unicode Transformation Format, 8 bit  «формат преобразования Юникода, 8 битный»)  распространённая кодировка символов Юникода, совместимая с 8 битными форматами передачи текста. Нашла широкое применение в операционных… …   Википедия

  • UTF-8 — (Abk. für 8 bit UCS Transformation Format wobei UCS wiederum Universal Character Set abkürzt) ist die am weitesten verbreitete Kodierung für Unicode Zeichen (Unicode und UCS sind praktisch identisch). Die Kodierung wurde im September 1992 von Ken …   Deutsch Wikipedia

  • UTF-7 — (7 bit Unicode Transformation Format) es una codificación de caracteres de longitud variable que fue propuesta para representar texto codificado con Unicode usando un flujo de caracteres ASCII, para ser usado, por ejemplo en mensajes de correo… …   Wikipedia Español

  • UTF-8 — (UCS Transformation Format  8 bit[1]) is a multibyte character encoding for Unicode. Like UTF 16 and UTF 32, UTF 8 can represent every character in the Unicode character set. Unlike them, it is backward compatible with ASCII and avoids the… …   Wikipedia

  • UTF-16 — (англ. Unicode Transformation Format) в информатике один из способов кодирования символов из Unicode в виде последовательности 16 битных слов. Данная кодировка позволяет записывать символы Юникода в диапазонах U+0000..U+D7FF и… …   Википедия

  • UTF-16 — est un codage des caractères définis par Unicode où chaque caractère est codé sur une suite de un ou deux mots de 16 bits. Le codage était défini dans le rapport technique 17 à la norme Unicode. Depuis, cette annexe est devenue obsolète car UTF… …   Wikipédia en Français

  • Utf-16 — Unicode Jeux de caractères UCS (ISO/CEI 10646) ISO 646, ASCII ISO 8859 1 WGL4 UniHan Équivalences normalisées NFC (précomposée) NFD (décomposée) NFKC (compatibilité) NFKD (compatibilité) Propriétés et algorithmes ISO 15924 …   Wikipédia en Français

  • Utf-8 — (от англ. Unicode Transformation Format формат преобразования Юникода) в настоящее время распространённая кодировка, реализующая представление Юникода, совместимое с 8 битным кодированием текста. Текст, состоящий только из символов с номером… …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”