Unicode - Jeu de caractères universel
La norme internationale ISO 10646 définit le jeu de
caractères universel (UCS). UCS contient tous les caractères de
tous les autres normes de jeux de caractères. 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 encodage, puis reconvertie en sens inverse.
UCS contient les caractères nécessaires pour représenter
presque toutes les langues connues. 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, dévanâgarî, bengali,
gourmoukhî, goudjarati, oriya, tamoul, télougou, kannara,
malayalam, thaï, laotien, khmer, bopomofo, tibétain, runes,
éthiopien, syllabaires canadiens, chérokî, mongol, ogam,
birman, 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 l’encodage et elles seront probablement
ajoutées. Cela 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, les polices OCR et par de
nombreux traitements de texte et systèmes d'édition, et de plus
en plus sont ajoutés.
La norme 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 de la norme
(ISO 10646-1) définit les 65 534 premiers codes (0x0000
à 0xFFFD) qui forment le
plan multilingue de base (PMB),
c'est-à-dire le plan 0 du groupe 0. La partie 2 de
la norme (ISO 10646-2) ajoute des caractères au groupe 0
en dehors du PMB, dans plusieurs
plans supplémentaires de
l'espace 0x10000 à 0x10ffff. On ne prévoit pas d'ajouter
à la norme 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 PMB 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 impressions
de dictionnaires, l'industrie de l'impression, des protocoles de plus 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
d’encodage : UTF-8 pour la rétrocompatibilité avec
les logiciels traitant l'ASCII et UTF-16 pour la gestion
rétrocompatible des caractères non PMB 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).
Quelques codes de l'UCS ont été assignés à des
caractères composés. Ils sont semblables aux touches
mortes d'accents 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
« À » (lettre majuscule latine A accent
grave) peut être représenté soit par le code UCS
précomposé 0x00C0, soit par la combinaison d'un A majuscule
normal, suivi d'un « diacritique accent grave »,
0x0041 0x0308.
Les caractères composés sont essentiels par exemple pour
l’encodage de l'écriture thaïe ou pour les notations
mathématiques et l'alphabet phonétique international.
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 jamos hangûl (un encodage spécial de
l'écriture coréenne, où les glyphes de syllabes
hangûl sont encodés par 2 ou 3 codes de voyelle ou
consonne) ne sont pas pris en charge.
- 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 dévanâgarî ou le
malayalam).
- Niveau 3
- Tous les caractères UCS sont
gérés.
La norme Unicode 3.0 publiée par le Consortium Unicode contient
exactement le plan multilingue de base UCS au niveau 3 de
l’implémentation, comme décrit dans la norme
ISO 10646-1:2000. Unicode 3.1 ajoute les plans
supplémentaires de l'ISO 10646-2. La norme Unicode et les
rapports techniques publiés par le Consortium Unicode fournissent
beaucoup de renseignements supplémentaires sur la sémantique et
les recommandations d’utilisation de nombreux caractères. Elles
fournissent des guides et des algorithmes pour éditer, trier, comparer,
normaliser, convertir et afficher des chaînes Unicode.
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 tous les
paramètres régionaux), une convention signalée par la
bibliothèque C de GNU pour les applications en
définissant la constante
__STDC_ISO_10646__ comme
indiquée dans la norme 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
textes, 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, des paramètres
régionaux (
locale) adéquats doivent être
configurés dans les variables d'environnement (par exemple,
« LANG=fr_FR.UTF-8 »).
The
nl_langinfo(CODESET) function returns the name of the selected
encoding. Library functions such as
wctomb(3) and
mbsrtowcs(3)
can be used to transform the internal
wchar_t characters and strings
into the system character encoding and back and
wcwidth(3) tells how
many positions (0–2) the cursor is advanced by the output of a
character.
L'intervalle entre 0xe000 et 0xf8ff du plan multilingue de base
(« Basic Multilingual Plane ») ne sera jamais
assigné a aucun caractère par la norme et est
réservé pour une utilisation privée. 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 maintenu par
LANANA et le registre lui-même est disponible dans les sources du noyau
Linux sous
Documentation/admin-guide/unicode.rst (ou
Documentation/unicode.txt avant Linux 4.10).
Deux autres plans sont réservés à un usage privé. Le
plan 15 (zone d'utilisation privée supplémentaire PUA-A,
intervalle 0xf0000-0xffffd) et le plan 16 (zone d'utilisation
privée PUA-B, intervalle 0x100000-0x10fffd).
- •
- 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 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.
Quatrième edition, Prentice Hall, Englewood Cliffs, 1995,
ISBN 0-13-326224-3.
- Un bon livre de référence sur le langage de
programmation C. La quatrième édition couvre
maintenant l'amendement 1 de 1994 à la norme 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.
- •
- Markus Kuhn : UTF-8 and Unicode FAQ for
UNIX/Linux.
- •
- Bruno Haible : Unicode HOWTO.
locale(1),
setlocale(3),
charsets(7),
utf-8(7)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]> et
Grégoire Scano <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 concernant les conditions de copie
et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
[email protected]