Date création : 30-03-2008 14:17:03
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section7 - Divers]
UNICODE
Index
- NOM
- DESCRIPTION
- CARACTÈRES COMPOSÉS
- NIVEAUX D'IMPLÉMENTATION
- UNICODE SOUS LINUX
- ZONE PRIVÉE
- LITTÉRATURE
- BOGUES
- AUTEUR
- VOIR AUSSI
- TRADUCTION
NOM
Unicode - Jeu de caractères universel.
DESCRIPTION
Le standard international ISO 10646 définit le jeu de caractères
universel (UCS). UCS contient tous les caractères de tous les autres jeux
de caractères standards. Il garantit également une compatibilité
circulaire, ce qui signifie que les tables de conversions peuvent être
construites de manière à ne perdre aucune information quand une chaîne de
caractères est convertie dans un autre codage, puis reconvertie en sens
inverse.
UCS contient les caractères nécessaires pour représenter presque tous les
langages connus. Il inclut non seulement les alphabets latin, grec,
cyrillique, hébreu, arabe, arménien et géorgien, mais également les
idéogrammes chinois, japonais, sino-coréens et les écritures hiragana,
katakana, hangûl, devanâgarî, bengalî, gurmukhî, gujarâtî, oriya, tamoul,
télougou, kannada, malayâlam, thaï, laotien, khmer, bopomofo, tibétain,
runique, éthiopienne, canadienne syllabique, cherokee, mongol, ogam,
birmane, cingalais, thâna, yi, et d'autres. Pour les écritures qui n'ont pas
encore été intégrées, des recherches sont en cours pour optimiser le codage
et elles seront probablement ajoutées. Ceci inclut non seulement des
hiéroglyphes et des langues indo-européennes historiques, mais aussi des
écritures artistiques comme les tengwar de Fëanor, les cirth, ou le
klingon. UCS contient également un grand nombre de symboles graphiques,
typographiques, mathématiques et scientifiques comme ceux fournis par TeX,
Postscript, APL, MS-DOS, MS-Windows, Macintosh, OCR, et de nombreux
traitements de texte et systèmes d'édition, et de plus en plus sont ajoutés.
Le standard UCS (ISO 10646) décrit un jeu de caractères sur 31 bits,
constitué de 128 groupes sur 24 bits, chacun d'eux divisés en 256
plans sur 16 bits, composés de 256 rangées de 8 bits, avec 256
positions en colonne contenant chacune un caractère. La première partie
du standard (ISO 10646-1) définit les 65 534 premiers codes (0x0000 à
0xFFFD) qui forme le Basic Multilingual Plane (BMP), c'est-à-dire le plan
0 du groupe 0. La partie 2 du standard (ISO 10646-2) ajoute des
caractères au groupe 0 en dehors du BMP, dans plusieurs plans
supplémentaires dans l'espace 0x10000 à 0x10ffff. On ne prévoit pas
d'ajouter au standard des caractères au-delà de 0x10ffff. Ainsi sur
l'ensemble de l'espace disponible, une faible fraction du groupe 0 ne sera
effectivement utilisée dans un futur proche. Le BMP contient tous les
caractères des jeux habituels. Les plans supplémentaires ajoutés par ISO
10646-2 ne contiennent que des caractères exotiques pour des notations
scientifiques spéciales, des dictionnaires d'impression, l'industrie de
l'impression, des protocoles de haut-niveau, et les besoins de quelques
enthousiastes.
La représentation des caractères UCS sur des mots de 2 octets est appelée
UCS-2 (seulement pour les caractères du BMP), alors que UCS-4 est la
représentation des caractères par un mot de 4 octets. De plus, il existe
deux formes de codage : UTF-8 pour la rétrocompatibilité avec les
logiciels traitant l'ASCII et UTF-16 pour les traitement des caractères
non BMP jusqu'à 0x10ffff par des logiciels UCS-2.
Les caractères UCS 0x0000 à 0x007f sont identiques à ceux du jeu classique
US-ASCII, et ceux de l'intervalle 0x0000 à 0x00ff sont identiques à ceux
du jeu de caractères ISO 8859-1 Latin-1.
CARACTÈRES COMPOSÉS
Quelques codes de l'UCS ont été assignés à des caractères
composés. Ils sont semblables aux touches d'accents sans avance sur les
machines à écrire. Un caractère composé ajoute simplement un accent sur le
caractère précédent. Les caractères accentués les plus importants ont leur
propre code dans l'UCS. Cependant, le mécanisme des caractères composés
permet d'ajouter des accents ou des signes diacritiques sur n'importe quel
caractère de base. Les caractères composés suivent toujours le caractère
qu'ils modifient. Par exemple, le caractère allemand « Umlaut-A » (A
majuscule avec un tréma) peut être représenté soit par le code UCS
précomposé 0x00C4, soit par la combinaison d'un A majuscule normal, suivi
d'un « tréma composé », 0x0041 0x0308.
Les caractères composés sont essentiels par exemple pour le codage de
l'écriture Thaï ou pour les notations mathématiques et l'alphabet phonétique
international.
NIVEAUX D'IMPLÉMENTATION
Comme tous les systèmes ne sont pas censés gérer les mécanismes avancés
comme les caractères composés, ISO 10646-1 spécifie les trois niveaux
d'implémentation suivants pour l'UCS :
- Niveau 1
-
Les caractères composés et les caractères Hangul Jamo (un codage spécial
de l'écriture coréenne, où les syllabes Hangûl sont codées par 2 ou 3 codes
de voyelle ou consonne) ne sont pas gérés.
- Niveau 2
-
Outre le niveau 1, les caractères composés sont maintenant permis pour
certaines langues où ils sont essentiels (par exemple, le thaï, le laotien,
l'hébreu, l'arabe, le devanâgarî, le malayâlam, etc.).
- Niveau 3
-
Tous les caractères UCS sont gérés.
Le standard Unicode 3.0 publié par le Unicode Consortium contient
exactement le Basic Multilingual Plane UCS au niveau d'implémentation 3,
comme décrit dans la norme ISO 10646-1:2000. Unicode 3.1 ajoute les plans
supplémentaires de l'ISO 10646-2. Le standard Unicode et les rapports
techniques publiés par le Unicode Consortium fournissent beaucoup
d'informations supplémentaires sur la sémantique et les recommandations
d'usage de différents caractères. Ils fournissent des guides et des
algorithmes pour éditer, trier, comparer, normaliser, convertir et afficher
des chaînes Unicode.
UNICODE SOUS LINUX
Sous GNU/Linux, le type C wchar_t est un entier 32 bits signé, et sa
valeur est toujours interprétée par la bibliothèque C comme un code UCS
(dans toutes les locales), une convention signalée par la bibliothèque C GNU
pour les applications en définissant la constante __STDC_ISO_10646__
comme indiquée dans le standard ISO C 99.
L'UCS/Unicode peut être employé comme l'ASCII dans les flux d'entrée-sortie,
les communications avec les terminaux, les fichiers texte, les noms de
fichier et les variables d'environnement dans un encodage multioctet
compatible UTF-8. Pour signaler l'utilisation de l'UTF-8 comme encodage
pour toutes les applications, une locale correcte doit être configurée
dans les variables d'environnement (par exemple, « LANG=fr_FR.UTF-8 »).
La fonction nl_langinfo(CODESET) renvoie le nom du codage
sélectionné. Les fonctions de bibliothèque comme wctomb(3) et
mbsrtowcs(3) peuvent être utilisées pour transformer les caractères
internes wchar_t et les chaînes dans le jeu de caractères du système et
inversement. La fonction wcwidth(3) indique de combien de positions
(0-2) le curseur a été avancé en affichant un caractère.
Sous Linux, en général, seule une implémentation BMP de niveau 1 devrait
être utilisée pour le moment. Pour certaines écritures (en particulier le
thaï), certains émulateurs de terminaux UTF-8 gèrent jusqu'à deux caractères
combinés avec une fonte ISO 10646 (niveau 2), mais il vaut mieux préférer
les caractères précomposés s'ils sont disponibles (Unicode appelle cela une
forme de normalisation C).
ZONE PRIVÉE
L'intervalle entre 0xe000 et 0xf8ff du BMP ne sera jamais assigné a aucun
caractère par le standard, et est réservé pour un usage privé. Pour la
communauté Linux, cette zone privée a été divisée en deux. L'intervalle
entre 0xe000 et 0xefff peut être utilisé individuellement par n'importe quel
utilisateur final. L'intervalle s'étendant de 0xf000 à 0xf8ff est réservé à
Linux, et les extensions y sont coordonnées entre les divers utilisateurs de
Linux. L'enregistrement des caractères assignés à la zone Linux est
actuellement maintenu par H. Peter Anvin <Peter.Anvin@linux.org>.
LITTÉRATURE
- *
-
Information technology --- Universal Multiple-Octet Coded Character Set
(UCS) --- Part 1: Architecture and Basic Multilingual Plane. International
Standard ISO/IEC 10646-1, International Organization for Standardization,
Geneva, 2000.
Il s'agit des spécifications officielles de l'UCS. Disponible en fichier
PDF sur CD-ROM sur http://www.iso.ch/.
- *
-
The Unicode Standard, Version 3.0. The Unicode Consortium, Addison-Wesley,
Reading, MA, 2000, ISBN 0-201-61633-5.
- *
-
S. Harbison, G. Steele. C - A Reference Manual. Fourth edition, Prentice
Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3.
Un bon livre de référence sur langage de programmation C. La quatrième
édition couvre maintenant l'amendement 1 de 1994 au standard ISO C 90, qui
ajoute un grand nombre de fonctions de bibliothèque C pour manipuler les
jeux de caractères larges et multioctets, mais ne couvre pas encore l'ISO C
99, qui améliore encore plus la gestion des caractères larges et
multioctets.
- *
-
Unicode Technical Reports.
-
http://www.unicode.org/unicode/reports/
- *
-
Markus Kuhn : UTF-8 and Unicode FAQ for Unix/Linux.
-
http://www.cl.cam.ac.uk/~mgk25/unicode.html
Fournit les informations sur la liste de diffusion linux-utf8, le
meilleur endroit pour trouver des conseils sur l'utilisation de l'Unicode
sous Linux.
- *
-
Bruno Haible : Unicode HOWTO.
-
ftp://ftp.ilog.fr/pub/Users/haible/utf8/Unicode-HOWTO.html
BOGUES
Au moment de la rédaction de cette page, la gestion par la bibliothèque C
GNU pour les locales UTF-8 était mûre, et la gestion par XFree86 était
avancée, mais le travail nécessaire pour rendre les applications
(principalement les éditeurs) compatibles avec l'UTF-8 était en cours. La
gestion générale actuelle de UCS sous Linux fournit les caractères
double-largeur CJK, et parfois les surcharges simples des caractères
combinés, mais ne permet pas l'écriture de droite à gauche ou les ligatures
nécessaires en hébreu, arabe ou indien. Ces écritures ne sont pour le moment
gérées que par certaines applications graphiques (visualisateurs HTML,
traitements de texte) avec des moteurs d'affichage perfectionnés.
AUTEUR
Markus Kuhn <mgk25@cl.cam.ac.uk>
VOIR AUSSI
setlocale(3), charsets(7), utf-8(7)
TRADUCTION
Cette page de manuel a été traduite et mise à jour par
Christophe Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003,
puis par Alain Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction par un rapport de bogue sur
le paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document en
utilisant la commande
« man -L C <section> <page_de_man> ».
|