NOM
Unicode - Jeu de caractères universel.
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 caractres 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 ranges 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 supplmentaires 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
dimplmentation 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 C99.
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 UTF-8 compatible ASCII. 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 C90, 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 C99, 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.
VOIR AUSSI
setlocale(3), charsets(7), utf-8(7)
COLOPHON
Cette page fait partie de la publication 3.23 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent être trouvées à l’adresse
http://www.kernel.org/doc/man-pages/.
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, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
francophone de traduction de Debian.
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou 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> ».