|
|||||||
|
|
UTF-8Section: Manuel de l'administrateur Linux (7)Updated: 25 juillet 2003 Index Return to Main Contents NOMUTF-8 - Un encodage Unicode multi-octets compatible ASCII.DESCRIPTIONLe jeu de caractères Unicode 3.0 (voir unicode(7)) est constitué d'un codage sur 16 bits. L'encodage Unicode le plus évident (connu sous le nom de UCS-2) consiste en une séquence de mots de 16 bits. De telles chaînes peuvent contenir, comme fragments de caractère 16 bits, des octets comme '\0' or '/' qui ont une signification particulière dans les noms de fichiers, et les paramètres de fonctions de bibliothèque C. De plus la majorité des outils UNIX attendent des fichiers ASCII et ne peuvent pas lire des caractères représentés par des mots de 16 bits sans subir des modifications majeures.Pour ces raisons, l'UCS-2 n'est pas un encodage externe de l'Unicode utilisable dans les noms de fichiers, les variables d'environnement, les fichiers textes, etc... Le sur-ensemble d'Unicode ISO 10646 Universal Character Set (UCS), occupe même un espace de codage sur 31 bits, et l'encodage évident UCS-4 (une séquence de mots sur 32 bits) a les mêmes inconvénients. L'encodage UTF-8 de l'Unicode et de l'UCS n'a pas ces inconvénients et est un moyen d'utiliser le jeu de caractères Unicode sous les systèmes d'exploitation compatibles UNIX. PROPRIÉTÉS.L'encodage UTF-8 a les propriétés suivantes :
ENCODAGELes séquences d'octets suivantes sont utilisées pour représenter un caractère. Les séquences utilisées dépendent du numéro de code UCS du caractère :
Les positions de bits xxx sont remplies avec les bits du numéro de code du caractère en représentation binaire. Seule la plus petite séquence multi-octets permettant de représenter un numéro de code doit être utilisée. Les codes UCS de valeur 0xd800-0xdfff (UTF-16) comme 0xfffe et 0xffff ne doivent pas apparaître dans un flux de données UTF-8. EXEMPLESLe caractère Unicode 0xA9 = 1010 1001 (le symbole copyright) est encodé en UTF-8 comme :
et le caractère 0x2260 = 0010 0010 0110 0000 (Le symbole "non égal") est encodé ainsi :
NOTES APPLICATIVESLes utilisateurs doivent sélectionner une localisation UTF-8, par exemple
afin d'active le support UTF-8 dans les applications. Les logiciels applicatifs qui doivent connaître l'encodage utilisé devrait toujours fixer la localisation, par exemple
et les programmeurs peuvent tester l'expression
pour savoir si une localisation UTF-8 a été sélectionnée, et si les entrées-sorties de texte, les communications avec les terminaux, le contenu des fichiers de texte, les noms de fichiers et les variables d'environnement sont encodés en UTF-8. Les programmeurs habitués aux jeux de caractères mono-octet comme US-ASCII ou ISO 8859 doivent savoir que deux suppositions valides jusque là ne le sont plus dans les localisation UTF-8. D'abord un octet seul ne correspond par nécessairement à un unique caractère. Ensuite, comme les émulateurs de terminaux modernes, en mode UTF-8 supportent également les caractères en double-largeur du Chinois, du Japonais ou du Coréen, comme les caractères combinés sans largeur, la sortie d'un unique caractère ne fait pas avancer obligatoirement le curseur d'une position comme c'était le cas en ASCII. Les fonctions de bibliothèque comme mbsrtowcs(3) et wcswidth(3) doivent servir à présent pour compter les caractères et les positions de curseur. La séquence ESC officielle pour basculer d'un encodage ISO 2022 (comme utilisé par exemple par les terminaux VT100) en UTF-8 est ESC % G ("\x1b%G"). La séquence de retour depuis UTF-8 est ISO 2022 est ESC % @ ("\x1b%@"). D'autres séquences ISO 2022 (comme celle pour basculer entre les jeux G0 et G1) ne sont pas applicables en mode UTF-8. On peut espérer que dans un futur proche, UTF-8 remplacera ASCII et ISO 8859 à tous les niveaux comme encodage des caractères sur les systèmes POSIX, ce qui conduira à un environnement sensiblement plus riche pour traiter des textes. SECURITÉLes standards Unicode et UCS demande que le producteur UTF-8 utilise la forme la plus courte possible, par exemple, produire une séquence de deux octets avec un premier octet 0xc0 n'est pas conforme. Unicode 3.1 a ajouté la nécessité pour les programmes conformes de ne pas accepter les formes non minimales en entrée. Il s'agit de raisons de sécurité : si une saisie est examinée pour des problèmes de sécurité, un programme doit rechercher seulement la version ASCII de "/../" ou ";" ou NUL. Il y a de nombreuses manières non-ASCII de représenter ces choses dans un encodage UTF-8 non minimal.CONFORMITÉISO/IEC 10646-1:2000, Unicode 3.1, RFC 2279, Plan 9.AUTEURMarkus Kuhn <mgk25@cl.cam.ac.uk>VOIR AUSSInl_langinfo(3), setlocale(3), charsets(7), unicode(7)TRADUCTIONChristophe Blaess, 1996-2003.
Index
| ||||||
|
|
|
Home :: Copyright :: Privacy :: Credits :: Get a free Linuxinfor Email Account Document on this page is part of "Linuxinfor Man Pages in HTML Format: man7". See Index Page for more info about Authorship and Copyright. 1999-2008 Linuxinfor.com. No rights reserved. |