Date création : 30-03-2008 14:17:03
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section7 - Divers]
CHARSETS
Index
- NOM
- DESCRIPTION
- ASCII
- ISO 8859
- KOI8-R
- JIS X 0208
- KS X 1001
- GB 2312
- Big5
- TIS 620
- UNICODE
- ISO 2022 et ISO 4873
- VOIR AUSSI
- TRADUCTION
NOM
charsets - Jeux de caractères et internationalisation pour les programmeurs.
DESCRIPTION
Linux est un système d\'exploitation international. Plusieurs de ses
utilitaires et de ses gestionnaires de périphériques (y compris le
gestionnaire de console) supportent les jeux de caractères multilingues
contenant les lettres de l\'alphabet latin avec des accents et des liaisons,
et des alphabets non-latin complets comme le grec, le cyrillique, l\'arabe ou
l\'hébreu.
Cette page de manuel présente le point de vue du programmeur sur les
différents jeux de caractères, et comment ils s\'organisent sous Linux. Les
standards présentés comprennent l\'ASCII, l\'ISO 8859, le KOI8-R, l\'Unicode,
l\'ISO 2022 et l\'ISO 4873. Un accent particulier est mis sur les jeux de
caractères véritablement utilisés dans les localisations, et non sur la
myriade de jeux provenant d\'autres systèmes.
Une liste complète des jeux de caractères utilisés dans une localisation
officielle de la GlibC est :vISO-8859-{1,2,3,5,6,7,8,9,13,15}, CP1251,
UTF-8, EUC-{KR,JP,TW}, OI8-{R,U}, GB2312, GB18030, GBK, BIG5, BIG5-HKSCS et
TIS-620, sans ordre particulier. Le roumain va peut-être basculer sur
ISO-8859-16).
ASCII
L\'ASCII (American Standard Code For Information Interchange) est le jeu de
caractères 7 bits original, prévu pour l\'anglais (américain). Il est décrit
actuellement dans le standard ECMA-6.
Une variante ASCII remplaçant le symbole américain « dièse # » par le
symbole anglais « livre sterling £ » est utilisée en Grande-Bretagne. Si
besoin, on identifie les variantes américaine et britannique en utilisant
les termes « ASCII US » et « ASCII UK ».
Comme Linux est écrit sur du matériel conçu pour les États-Unis, il supporte
l\'ASCII US de manière native.
ISO 8859
L\'ISO 8859 est une série de 10 jeux de caractères 8 bits, contenant l\'ASCII
US dans leur première moitié (7 bits), des caractères de contrôle
non-imprimables entre les positions 128 et 159, et 96 symboles graphiques de
largeur fixe aux emplacements 160 à 255.
De tous ces jeux, le plus important (Ndt : notamment pour nous !) est
l\'ISO 8859-1 (Latin-1). Il est supporté de manière native par le
gestionnaire de console Linux, assez bien supporté par X11R6, et c\'est le
jeu de caractères de base pour l\'HTML.
Le support console des autres jeux de caractères 8859 est disponible sous
Linux, à travers des utilitaires comme setfont(8), qui modifient la
correspondance des touches du clavier, la table graphique EGA, et utilisent
une projection personnalisée de la table de fonte du gestionnaire de
console.
Voici une brève description des jeux de caractères 8859 :
- 8859-1 (Latin-1)
-
Le Latin-1 couvre la plupart des langues d\'Europe de l\'Ouest, comme
l\'albanais, l\'allemand, l\'anglais, le catalan, le danois, l\'espagnol, le
férovingien, le finnois, le français, le gallois, le néerlandais,
l\'irlandais, l\'islandais, l\'italien, le norvégien, le portugais et le
suédois. Le manque de liaison entre les « ij » néerlandais, entre les « oe » français, et l\'absence des anciens guillemets ,,allemands`` est
tolérable.
- 8859-2 (Latin-2)
-
Le Latin-2 contient la plupart des langues slaves d\'Europe de l\'Est
utilisant l\'alphabet latin : allemand, croate, hongrois, polonais, roumain,
slovaque, slovénien et tchèque.
- 8859-3 (Latin-3)
-
Le Latin-3 est utilisé pour les textes en esperanto, galois, maltais et
turc.
- 8859-4 (Latin-4)
-
Le Latin-4 introduit des lettres pour l\'estonien et le lituanien. Il est
presque obsolète, remplacé par 8859-10 (Latin-6).
- 8859-5
-
L\'alphabet cyrillique est utilisé en bulgare, biélorusse, macédonien, russe,
serbe et ukrainien. Les Ukrainiens prononcent la lettre « ghe » fermée,
comme « heh » et aurait besoin d\'un accent pour distinguer le « ghe »
correct. Voir les remarques concernant le KOI8-R ci-dessous.
- 8859-6
-
Supporte l\'arabe. La table 8859-6 est une police de caractères de largeur
fixe, mais un affichage correct doit combiner les lettres en utilisant leurs
formes initiale, centrale et finale.
- 8859-7
-
Supporte le grec moderne.
- 8859-8
-
Supporte l\'hébreu.
- 8859-9 (Latin-5)
-
Il s\'agit d\'une variante du Latin-1 qui remplace les lettres islandaises
rarement utilisées par des lettres turques.
- 8859-10 (Latin-6)
-
Le Latin 6 ajoute les dernières lettres inuit (Groënland) et sami (lappon)
qui manquaient dans le Latin 4 pour couvrir toute la zone nordique. La RFC
1345 indique un latin 6 plus ancien et différent. Le sami nécessite en
réalité plus d\'accents que ceux proposés.
- 8859-11
-
Ceci n\'existe qu\'en tant que proposition rejetée. Il s\'agit d\'une version
identique au TIS-620, utilisé sous Linux pour le thaï.
- 8859-12
-
Ce jeu n\'existe pas. On a proposé de l\'utiliser pour le vietnamien, mais il
ne tient pas dans les 96 caractères (sans combinaisons) offerts par l\'ISO
8850. L\'UTF-8 est le jeu de caractère préféré pour l\'utilisation du
vietnamien sous Linux.
- 8859-13 (Latin-7)
-
Supporte les langues baltiques, en particulier les caractères lituaniens
absents du Latin-4.
- 8859-14 (Latin-8)
-
Jeu de caractères celtique, couvrant le gaëlique et le gallois. Ce jeu
contient les caractères pointés nécessaires pour l\'irlandais ancien.
- 8859-15 (Latin-9)
-
Dans ce jeu se trouvent le symbole euro et les ligatures françaises qui
manquaient dans le Latin-1.
- 8859-16 (Latin-10)
-
Ce jeu recouvre la plupart des langues du 8859-2, et supporte mieux le
Roumain.
KOI8-R
Le KOI8-R est un jeu de caractères non-ISO très répandu en Russie. La
première moitié correspond à l\'ASCII US, la seconde est un jeu de caractère
cyrillique un peu mieux conçu que l\'ISO 8859-5. Le KOI8-U est un jeu commun,
basé sur le KOI8-R, qui a un meilleur support pour l\'ukrainien. Aucun de
ces jeux n\'est compatible avec l\'ISO-2022, contrairement à l\'ISO-8859.
Le support console du KOI8-R est disponible sous Linux, à travers des
utilitaires comme setfont(8), qui modifient la correspondance des touches
du clavier, la table graphique EGA, et utilisent une projection
personnalisée de la table de fonte du gestionnaire de console.
JIS X 0208
JIS X 0208 est un jeu de caractères standard japonais. Bien qu\'il y ait
plusieurs jeux de caractères standard japonais, (comme JIS X 0201, JIS X
0212, et JIS X 0213), celui-ci est le plus important. Les caractères sont
projetés dans une matrice de deux octets 94x94, dont chaque octet est dans
l\'intervalle x21-0x7E. Notez que JIS X 0208 est un jeu de caractères, pas un
encodage. Ceci signifie que JIS X 0208 lui-même n\'est pas utilisé pour
exprimer des données de texte. Il est utilisé comme composant pour
construire un encodage comme EUC-JP, Shift_JIS, et ISO-2022-JP. EUC-JP est
le plus important encodage sous Linux et inclut l\'ASCII US et le JIS X
0208. Dans l\'EUC-JP, les caractères du JIS X 0208 sont exprimés sur deux
octets, chacun étant le code JIS X 0208 plus 0x80.
KS X 1001
KS X 1001 est un jeu de caractères standard coréen. Comme dans le JIS X
0208, les caractères sont projetés dans une matric 94x94 sur deux octets.
KS X 1001 est utilisé, comme le JIS X 0208, comme composant pour construire
un encodage comme le EUC-KR, Johab, et ISO-2022-KR. EUC-KR est l\'encodage
le plus important sous Linux et inclut l\'ASCII US et le KS X 1001. KS C 5601
est un ancien nom pour le KS X 1001.
GB 2312
GB 2312 est le principal jeu de caractères chinois, utilisé pour exprimer le
chinois simplifié. Comme avec le JIS X 0208, les caractères sont projetés
dans une matrice 94x94 sur deux octets pour construire l\'EUC-CN. Celui-ci
est l\'encodage le plus important sous Linux et inclut l\'ASCII US et le GB
2312. Notez que l\'EUC-CN est souvent appelé GB, GB 2312 ou CN-GB.
Big5
Big5 est un jeu de caractères populaire à Taïwan pour exprimer le chinois
traditionnel (Big5 est à la fois un jeu de caractères et un encodage). C\'est
un surensemble de l\'ASCII. Les caractères non ASCII sont exprimés sur deux
octets. Les octets 0xA1-0xFE sont utilisés en préambule pour les caractères
de deux octets. Le Big5 et son extension sont largement utilisés à Taiwan et
Hong-Kong. Il n\'est pas compatible ISO 2022.
TIS 620
Le TIS 620 est un jeu de caractère standard thaï, et un surensemble de
l\'ASCII US. Comme la série des ISO 8859, les caractères thaïs sont projetés
dans l\'intervalle 0xA1-0xFE. Le TIS 620 est le seul jeu de caractères
couramment utilisé sous Linux, hormis l\'UTF-8, avec des caractères combinés.
UNICODE
L\'Unicode (ISO 10646) est un standard destiné à représenter sans ambiguïté
tous les signes écrits de toutes les langues humaines connues. La structure
de l\'Unicode offre 21 bits pour chaque caractère. Comme les ordinateurs
n\'ont pas d\'entiers avec 21 bits, l\'encodage Unicode interne est sur 32
bits, et en externe sur des séries d\'entiers 16 bits (UTF-16) (qui ne
nécessite deux entiers 16 bits que pour des caractères rares) ou une série
d\'octets 8 bits (UTF-8). Des informations supplémentaires sur l\'Unicode sont
disponibles sur <http://www.unicode.org>.
Linux représente l\'Unicode en utilisant le format de transfert sur 8 bits
(UTF-8). L\'UTF-8 est un codage à longueur variable. Il utilise un octet pour
coder 7 bits, 2 octets pour 11 bits, 3 octets pour 16 bits, 4 octets pour 21
bits, 5 octets pour 26 bits, 6 octets pour 31 bits.
Représentons par 0,1,x des bits à 0, à 1, ou quelconque. Un octet 0xxxxxxx
correspond à l\'Unicode 00000000 0xxxxxxx qui indique le même symbole que
l\'ASCII 0xxxxxxx. Ainsi, ASCII n\'est pas modifié par UTF-8, et les gens
utilisant uniquement l\'ASCII ne remarqueront aucun changement : ni dans le
codage, ni dans les tailles de fichiers.
Un octet 110xxxxx représente le début d\'un code sur 2 octets, et 110xxxxx
10yyyyyy est assemblé en 00000xxx xxyyyyyy. Un octet 1110xxxx correspond au
début d\'un code sur 3 octets, et 1110xxxx 10yyyyyy 10zzzzzz sont assemblés
en xxxxyyyy yyzzzzzz. Quand l\'UTF-8 est utilisé pour coder les 31 bits de
l\'ISO 10646 cette progression continue jusqu\'à des codes sur 6 octets.
Pour les utilisateurs de l\'ISO-8859-1, ceci signifie que les caractères avec
le bit de poids fort à 1 sont désormais codés sur deux octets. Ceci tend à
allonger les fichiers de texte ordinaires de 1 à 2 pour cent ([NDT] Dans
quelle langue ? Il y a plus d\'un à deux pour cent de caractères accentués en
français !). Il n\'y a pas de problèmes de conversion néanmoins, car les
symboles Unicode correspondant aux caractères ISO-8859-1 conservent les
mêmes valeurs (étendues avec 8 bits à zéro en tête). Pour les utilisateurs
japonais, ceci signifie que les codes sur 16 bits couramment employés
prendront désormais 3 octets, et que les tables de transcodage devront être
étendues. D\'ailleurs de nombreux japonais préfèrent le standard ISO 2022.
Remarquez que l\'UTF-8 se synchronise automatiquement : 10xxxxxx est le
corps ou la fin d\'un code, et tout autre octet est un début de code. Notez
également que les octets ASCII dans un flux UTF-8 ne peuvent que représenter
les caractères ASCII correspondants. En particulier il n\'y a pas de
caractères nuls (\'rs0\') ou \'/\' faisant partie d\'un code plus grand.
Comme l\'ASCII, et en particulier NUL et « / », ne sont pas modifiés, le
noyau ne remarque pas que l\'UTF-8 est utilisé. Il n\'a pas à se préoccuper de
la signification des octets qu\'il manipule.
La gestion des flux de données Unicode est généralement effectuée à travers
des tables de « sous-fontes » correspondant à un sous-ensemble des
caractères Unicode. En interne, le noyau utilise l\'Unicode pour décrire les
sous-fontes chargées en mémoire vidéo. Ceci signifie qu\'en mode UTF-8, on
peut utiliser le jeu de caractères japonais avec 512 symboles différents. Ce
n\'est pas assez pour le japonais, le chinois ou le coréen, mais c\'est
généralement suffisant pour toutes les autres utilisations.
À l\'heure actuelle, le pilote de la console ne permet pas d\'utiliser les
caractères combinants. Les langages Thai, Sioux, et tout autre nécessitant
des caractères combinants ne peut pas être utilisé sur la console.
ISO 2022 et ISO 4873
Les standards ISO 2022 et 4873 décrivent un modèle de contrôle des fontes
basé sur le fonctionnement du VT100. Ce modèle est (partiellement) supporté
par le noyau Linux et xterm(1). Il est assez populaire au Japon et en
Corée.
Il existe 4 jeux de caractères graphiques, nommés G0, G1, G2 et G3, l\'un
d\'entre eux est utilisé comme jeu de caractères en cours pour les codes avec
le bit de poids fort à 0 (par défaut G0), et un autre est utilisé pour les
codes avec le bit de poids fort à 1 (initialement G1). Chaque ensemble
dispose de 94 ou 96 caractères, et est constitué de caractères sur 7
bits. Ce modèle utilise soit les codes 040-0177 (041-0176) soit les codes
0240-0377 (0241-0376). G0 a toujours une taille de 94 caractères et utilise
les codes 041-0176.
Le basculement entre les jeux de caractères est effectué à travers les
séquences ^N (SO ou LS1), ^O (SI ou LS0), ESC n (LS2), ESC o (LS3), ESC N
(SS2), ESC O (SS3), ESC ~ (LS1R), ESC } (LS2R), ESC | (LS3R). La fonction
LSn réclame le jeu Gn pour les codes dont le bit de poids fort est à
zéro. La fonction Sn demande le jeu Gn pour les codes dont le bit de
poids fort est à un. La fonction SSn réclame le jeu Gn (n=2 ou 3)
pour le caractère suivant uniquement (quelle que soit la valeur du bit de
poids fort).
Un jeu de 94 caractères est désigné comme jeu Gn par une séquence ESC (
xx (pour G0), ESC ) xx (pour G1), ESC * xx (pour G2), ESC + xx (pour G3), où
xx est un symbole, ou une paire de symboles du standard ISO 2375
International Register of Coded Character Sets. Par exemple, ESC ( @
sélectionne le jeu ISO 646 en tant que G0, ESC ( A sélectionne le jeu
standard UK (avec la livre sterling à la place du dièse), ESC ( B
sélectionne l\'ASCII, ESC ( M sélectionne un jeu de caractères africain, ESC
( ! A sélectionne les caractères cubains, etc.
Un jeu de 96 caractères est désigné comme jeu Gn par une séquence ESC -
xx (pour G1), ESC . xx (pour G2) ou ESC / xx (pour G3). Par exemple, ESC -
G sélectionne l\'alphabet hébreu comme G1.
Un jeu de caractères multi-octets est désigné comme jeu Gn par une
séquence ESC $ xx ou ESC $ ( xx (pour G0), ESC $ ) xx (pour G1), ESC $ * xx
(pour G2), ESC $ + xx (pour G3). Par exemple, ESC $ ( C sélectionne les
caractères coréens pour le jeu G0. Le jeu de caractères japonais
sélectionné par ESC $ B dispose d\'une version plus récente sélectionnée par
ESC & @ ESC $ B.
L\'ISO 4873 réclame une utilisation précise des jeux de caractères, dans
laquelle G0 est fixé (toujours l\'ASCII), ainsi seuls G1, G2 et G3 peuvent
être invoqués pour les codes avec un bit de poids fort à 1. En particulier,
^N et ^O ne sont plus utilisés, ESC ( xx peut seulement être utilisé avec
xx=B, et ESC ) xx, ESC * xx, ESC + xx sont équivalents à ESC - xx, ESC . xx,
ESC / xx, respectivement.
VOIR AUSSI
console(4), console_codes(4), console_ioctl(4), ascii(7),
unicode(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> ».
|