Page d'accueil encyclopedie-enligne.com en page d'accueil
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


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

Description

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.

Exemples pratiques

caractère code numérique octets UTF-8
A 65 01000001
é 233 11000011 10101001
8364 11100010 10000010 10101100
𝄞 119070 11110000 10011101 10000100 10011110


Avantages

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.

Inconvénients

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.

Histoire

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.

Voir aussi

Liens internes

[ UTF-16 | UTF-32 | Unicode | ASCII | ISO 8859-1 | Wikipédia:Caractères spéciaux ]

Liens externes




This site support the Wikimedia Foundation. This Article originally from Wikipedia. All text is available under the terms of the GNU Free Documentation License Page HistoryOriginal ArticleWikipedia