Provided by:
manpages-fr_3.32d0.2p4-1_all 
NOM
charsets - Jeux de caracteres et internationalisation pour les
programmeurs
DESCRIPTION
Linux est un systeme d'exploitation international. Plusieurs de ses
utilitaires et de ses gestionnaires de peripheriques (y compris le
gestionnaire de console) prennent en charge les jeux de caracteres
multilingues contenant les lettres de l'alphabet latin avec des accents
et des ligatures, et des alphabets non-latin complets comme le grec, le
cyrillique, l'arabe ou l'hebreu.
Cette page de manuel presente le point de vue du programmeur sur les
differents jeux de caracteres, et comment ils s'organisent sous Linux.
Les standards presentes 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 caracteres veritablement utilises dans les parametres
regionaux, et non sur la myriade de jeux de caracteres provenant
d'autres systemes.
Une liste complete des jeux de caracteres utilises dans les parametres
regionaux officiels de la glibc est : ISO-8859-{1,2,3,5,6,7,8,9,13,15},
CP1251, UTF-8, EUC-{KR,JP,TW}, KOI8-{R,U}, GB2312, GB18030, GBK, BIG5,
BIG5-HKSCS et TIS-620, sans ordre particulier. Le roumain a bascule
vers ISO-8859-16.
ASCII
L'ASCII (American Standard Code For Information Interchange) est le jeu
de caracteres 7 bits original, prevu pour l'anglais (americain). Il est
decrit actuellement dans le standard ECMA-6.
Differentes variantes d'ASCII existent, qui remplacent le dollar par
d'autres symboles monetaires et la ponctuation par des caracteres
accentues pour couvrir l'allemand, le francais, l'espagnol et d'autres
langues en 7 bits. Elles sont toutes obsoletes, la glibc ne gere que
les parametres regionaux dont le jeu de caracteres est un surensemble
d'ASCII (ces jeux de caracteres sont aussi appeles ISO-646, un cousin
proche d'ASCII qui a permis de remplacer ces caracteres).
Comme Linux est ecrit pour du materiel concu aux Etats-Unis, il prend
en charge l'ASCII de maniere native.
ISO 8859
L'ISO 8859 est une serie de 10 jeux de caracteres 8 bits, contenant
l'ASCII US dans leur premiere moitie (7 bits), des caracteres de
controle non imprimables entre les positions 128 et 159, et 96 symboles
graphiques de largeur fixe aux emplacements 160 a 255.
De tous ces jeux, le plus important est l'ISO 8859-1 (latin-1). Il est
pris en charge de maniere native par le gestionnaire de console Linux,
assez bien pris en charge par X11R6, et c'est le jeu de caracteres de
base pour l'HTML.
La prise en charge console des autres jeux de caracteres 8859 est
disponible sous Linux, a travers des utilitaires comme setfont(8), qui
modifient la correspondance des touches du clavier, la table graphique
EGA, et utilisent une projection personnalisee de la police du
gestionnaire de console.
Voici une breve description des jeux de caracteres 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 ferovingien, le finnois, le francais, le gallois,
le neerlandais, l'irlandais, l'islandais, l'italien, le
norvegien, le portugais et le suedois. Le manque de ligature
entre les << ij >> neerlandais, entre les << oe >> francais, et
l'absence des anciens guillemets ,,allemands" est tolerable.
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, slovene et tcheque.
8859-3 (latin-3)
Le latin-3 est utilise pour les textes en esperanto, gallois,
maltais et turc.
8859-4 (latin-4)
Le latin-4 introduit des lettres pour l'estonien et le
lituanien. Il est presque obsolete, remplace par 8859-10
(latin-6) et 8859-13 (latin-7).
8859-5 L'alphabet cyrillique est utilise en bulgare, bielorusse,
macedonien, russe, serbe et ukrainien. Les Ukrainiens prononcent
la lettre << ghe >> fermee, comme << heh >> et auraient besoin
d'un accent pour distinguer le << ghe >> correct. Consultez les
remarques concernant le KOI8-R ci-dessous.
8859-6 Prend en charge l'arabe. La table 8859-6 est une police de
caracteres de largeur fixe, mais un affichage correct doit
combiner les lettres en utilisant leurs formes initiale,
centrale et finale.
8859-7 Prend en charge le grec moderne.
8859-8 Prend en charge l'hebreu sans niqqud (diacritiques). Les niqqud
et l'hebreu biblique dans son ensemble sont en dehors de la
portee de ce jeu de caracteres ; sous Linux, UTF-8 est
recommande pour cela.
8859-9 (latin-5)
Il s'agit d'une variante du latin-1 qui remplace les lettres
islandaises rarement utilisees par des lettres turques.
8859-10 (latin-6)
Le latin 6 ajoute les dernieres lettres inuit (Groenland) et
sami (lappon) qui manquaient dans le latin 4 pour couvrir toute
la zone nordique. La RFC 1345 indique un latin 6 preliminaire et
different. Le sami necessite en realite plus d'accents que ceux
proposes.
8859-11
Ceci n'existe qu'en tant que proposition rejetee. Il s'agit
d'une version identique au TIS-620, utilise sous Linux pour le
thai.
8859-12
Ce jeu n'existe pas. On a propose de l'utiliser pour le
vietnamien, mais il ne tient pas dans les 96 caracteres (sans
combinaisons) offerts par l'ISO 8859. L'UTF-8 est le jeu de
caractere prefere pour l'utilisation du vietnamien sous Linux.
8859-13 (latin-7)
Prend en charge les langues des pays baltes, en particulier les
caracteres lituaniens absents du latin-4.
8859-14 (latin-8)
Jeu de caracteres celtique, couvrant le gaelique et le gallois.
Ce jeu contient les caracteres pointes necessaires pour
l'irlandais ancien.
8859-15 (latin-9)
Dans ce jeu se trouvent le symbole euro et les ligatures
francaises qui manquaient dans le latin-1.
8859-16 (latin-10)
Ce jeu recouvre la plupart des langues du 8859-2, et prend mieux
en charge le roumain.
KOI8-R
Le KOI8-R est un jeu de caracteres non-ISO tres repandu en Russie. La
premiere moitie correspond a l'ASCII US, la seconde est un jeu de
caractere cyrillique un peu mieux concu que l'ISO 8859-5. Le KOI8-U est
un jeu commun, base sur le KOI8-R, qui a une meilleure prise en charge
de l'ukrainien. Aucun de ces jeux n'est compatible avec l'ISO-2022,
contrairement a l'ISO-8859.
La prise en charge console du KOI8-R est disponible sous Linux, a
travers des utilitaires comme setfont(8), qui modifient la
correspondance des touches du clavier, la table graphique EGA, et
utilisent une projection personnalisee de la police du gestionnaire de
console.
JIS X 0208
JIS X 0208 est un jeu de caracteres standard japonais. Bien qu'il y ait
plusieurs jeux de caracteres standard japonais, (comme JIS X 0201,
JIS X 0212, et JIS X 0213), celui-ci est le plus important. Les
caracteres sont projetes dans une matrice de deux octets 94x94, dont
chaque octet est dans l'intervalle 0x21-0x7E. Notez que JIS X 0208 est
un jeu de caracteres, pas un encodage. Ceci signifie que JIS X 0208
lui-meme n'est pas utilise pour exprimer des donnees de texte. Il est
utilise 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
caracteres du JIS X 0208 sont exprimes sur deux octets, chacun etant le
code JIS X 0208 plus 0x80.
KS X 1001
KS X 1001 est un jeu de caracteres standard coreen. Comme dans le
JIS X 0208, les caracteres sont projetes dans une matrice 94x94 sur
deux octets. KS X 1001 est utilise, 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 caracteres chinois, utilise pour
exprimer le chinois simplifie. Comme avec le JIS X 0208, les caracteres
sont projetes 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 appele
GB, GB 2312 ou CN-GB.
Big5
Big5 est un jeu de caracteres populaire a Taiwan pour exprimer le
chinois traditionnel (Big5 est a la fois un jeu de caracteres et un
encodage). C'est un surensemble de l'ASCII. Les caracteres non ASCII
sont exprimes sur deux octets. Les octets 0xA1-0xFE sont utilises en
preambule pour les caracteres de deux octets. Le Big5 et son extension
sont largement utilises a Taiwan et Hong-Kong. Il n'est pas compatible
ISO 2022.
TIS-620
Le TIS-620 est un jeu de caractere standard thai, et un surensemble de
l'ASCII US. Comme la serie des ISO 8859, les caracteres thais sont
projetes dans l'intervalle 0xA1-0xFE. Le TIS-620 est le seul jeu de
caracteres couramment utilise sous Linux, hormis l'UTF-8, avec des
caracteres combines.
UNICODE
L'Unicode (ISO 10646) est un standard destine a representer sans
ambiguite tous les signes ecrits de toutes les langues humaines
connues. La structure de l'Unicode offre 21 bits pour chaque caractere.
Comme les ordinateurs n'ont pas d'entiers avec 21 bits, l'encodage
Unicode interne est sur 32 bits, et en externe sur des series d'entiers
16 bits (UTF-16) (qui ne necessite deux entiers 16 bits que pour des
caracteres rares) ou une serie d'octets 8 bits (UTF-8). Des
informations supplementaires sur l'Unicode sont disponibles sur
<http://www.unicode.org>.
Linux represente l'Unicode en utilisant le format de transfert sur
8 bits (UTF-8). L'UTF-8 est un codage a 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.
Representons par 0,1,x des bits a 0, a 1, ou quelconque. Un
octet 0xxxxxxx correspond a l'Unicode 00000000 0xxxxxxx qui indique le
meme symbole que l'ASCII 0xxxxxxx. Ainsi, ASCII n'est pas modifie 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 represente le debut d'un code sur 2 octets, et
110xxxxx 10yyyyyy est assemble en 00000xxx xxyyyyyy. Un octet 1110xxxx
correspond au debut d'un code sur 3 octets, et
1110xxxx 10yyyyyy 10zzzzzz sont assembles en xxxxyyyy yyzzzzzz. Quand
l'UTF-8 est utilise pour coder les 31 bits de l'ISO 10646 cette
progression continue jusqu'a des codes sur 6 octets.
Pour les utilisateurs de l'ISO-8859, ceci signifie que les caracteres
avec le bit de poids fort a 1 sont desormais codes sur deux octets.
Ceci tend a allonger la taille des fichiers textes ordinaires de
quelques pour cent (N.d.T. : il n'y a pas de problemes de conversion
neanmoins, car les symboles Unicode correspondant aux caracteres
ISO-8859 conservent les memes valeurs, etendues avec 8 bits a zero en
tete). Pour le russe ou le grec, la taille des fichiers textes
ordinaires est generalement doublee car la plupart des caracteres sont
en dehors de l'ASCII. Pour les utilisateurs japonais, cela signifie que
les codes sur 16 bits couramment employes prendront desormais 3 octets.
Des conversions algorithmiques sont possibles depuis certains jeux de
caracteres (en particulier ISO-8859-1) vers l'UTF-8, mais une
conversion generique necessite l'utilisation de tables de conversion,
qui peuvent etre assez larges pour des codes sur 16 bits.
Remarquez que l'UTF-8 se synchronise automatiquement : 10xxxxxx est le
corps ou la fin d'un code, et tout autre octet est un debut de code.
Notez egalement que les octets ASCII dans un flux UTF-8 ne peuvent que
representer les caracteres ASCII correspondants. En particulier il n'y
a pas de caracteres nuls (<< \0 >>) ou << / >> faisant partie d'un code
plus grand.
Comme l'ASCII, et en particulier NUL et << / >>, n'est pas modifie, le
noyau ne remarque pas que l'UTF-8 est utilise. Il n'a pas a se
preoccuper de la signification des octets qu'il manipule.
La gestion des flux de donnees Unicode est generalement effectuee a
travers des tables de << sous-fontes >> correspondant a un
sous-ensemble des caracteres Unicode. En interne, le noyau utilise
l'Unicode pour decrire les sous-fontes chargees en memoire video. Ceci
signifie qu'en mode UTF-8, on peut utiliser un jeu de caracteres avec
512 symboles differents. Ce n'est pas assez pour le japonais, le
chinois ou le coreen, mais c'est generalement suffisant pour toutes les
autres utilisations.
A l'heure actuelle, le pilote de la console ne permet pas d'utiliser
les caracteres combinants. Les langues thai, sioux, et toute autre
necessitant des caracteres combinants ne peuvent pas etre utilisees sur
la console.
ISO 2022 et ISO 4873
Les standards ISO 2022 et 4873 decrivent un modele de controle des
fontes base sur le fonctionnement du VT100. Ce modele est
(partiellement) pris en charge par le noyau Linux et xterm(1). Il est
assez populaire au Japon et en Coree.
Il existe 4 jeux de caracteres graphiques, nommes G0, G1, G2 et G3,
l'un d'entre eux est utilise comme jeu de caracteres en cours pour les
codes avec le bit de poids fort a 0 (par defaut G0), et un autre est
utilise pour les codes avec le bit de poids fort a 1 (initialement G1).
Chaque ensemble dispose de 94 ou 96 caracteres, et est constitue de
caracteres sur 7 bits. Ce modele utilise soit les codes 040-0177
(041-0176) soit les codes 0240-0377 (0241-0376). G0 a toujours une
taille de 94 caracteres et utilise les codes 041-0176.
Le basculement entre les jeux de caracteres est effectue a travers les
sequences ^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 reclame le jeu Gn pour les codes dont le bit de poids fort
est a zero. La fonction Sn demande le jeu Gn pour les codes dont le bit
de poids fort est a un. La fonction SSn reclame le jeu Gn (n=2 ou 3)
pour le caractere suivant uniquement (quelle que soit la valeur du bit
de poids fort).
Un jeu de 94 caracteres est designe comme jeu Gn par une sequence ESC (
xx (pour G0), ESC ) xx (pour G1), ESC * xx (pour G2), ESC + xx (pour
G3), ou xx est un symbole, ou une paire de symboles du standard
ISO 2375 International Register of Coded Character Sets. Par exemple,
ESC ( @ selectionne le jeu ISO 646 en tant que G0, ESC ( A selectionne
le jeu standard britannique (avec la livre sterling a la place du
diese), ESC ( B selectionne l'ASCII, ESC ( M selectionne un jeu de
caracteres africain, ESC ( ! A selectionne les caracteres cubains, etc.
Un jeu de 96 caracteres est designe comme jeu Gn par une sequence ESC -
xx (pour G1), ESC . xx (pour G2) ou ESC / xx (pour G3). Par exemple,
ESC - G selectionne l'alphabet hebreu comme G1.
Un jeu de caracteres multioctets est designe comme jeu Gn par une
sequence ESC $ xx ou ESC $ ( xx (pour G0), ESC $ ) xx (pour G1), ESC $
* xx (pour G2), ESC $ + xx (pour G3). Par exemple, ESC $ ( C
selectionne les caracteres coreens pour le jeu G0. Le jeu de caracteres
japonais selectionne par ESC $ B dispose d'une version plus recente
selectionnee par ESC & @ ESC $ B.
L'ISO 4873 reclame une utilisation precise des jeux de caracteres, dans
laquelle G0 est fixe (toujours l'ASCII), ainsi seuls G1, G2 et G3
peuvent etre invoques pour les codes avec un bit de poids fort a 1. En
particulier, ^N et ^O ne sont plus utilises, ESC ( xx peut seulement
etre utilise avec xx=B, et ESC ) xx, ESC * xx, ESC + xx sont
equivalents a ESC - xx, ESC . xx, ESC / xx, respectivement.
VOIR AUSSI
console(4), console_codes(4), console_ioctl(4), ascii(7),
iso_8859-1(7), unicode(7), utf-8(7)
COLOPHON
Cette page fait partie de la publication 3.32 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe de traduction
francophone au sein du projet perkamon
<URL:http://perkamon.alioth.debian.org/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003),
Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Julien
Cristau et l'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.