charsets(7) Miscellaneous Information Manual charsets(7)
NOM
charsets - Normes de jeux de caracteres et internationalisation
DESCRIPTION
Cette page de manuel presente differentes normes de jeux de caracteres
et la facon de les utiliser sous Linux avant qu'Unicode ne devienne
ubiquitaire. Certains de ces renseignements sont encore utiles aux
personnes travaillant avec des systemes ou des documents anciens.
ASCII, GB 2312, ISO/IEC 8859, JIS, KOI8-R, KS et Unicode font partie
des normes presentees.
Un accent particulier est mis sur les jeux de caracteres qui etaient
veritablement utilises dans les parametres regionaux, et non sur la
myriade de jeux de caracteres provenant d'autres systemes.
ASCII
L'ASCII (American Standard Code For Information Interchange) est le jeu
de caracteres 7 bits original, prevu pour l'anglais (americain). Il est
aussi connu sous le nom US-ASCII. Il est decrit actuellement dans la
norme ISO/IEC 646:1991 IRV (International Reference Version).
Differentes variantes d'ASCII sont apparues, remplacant 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 sur-ensemble
d'ASCII.
Comme Unicode, lors de l'utilisation d'UTF-8, est compatible avec
ASCII, le texte en simple ASCII est toujours rendu correctement sur les
systemes modernes utilisant l'UTF-8.
ISO/IEC 8859
L'ISO/IEC 8859 est une serie de 15 jeux de caracteres 8 bits contenant
l'ASCII 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/IEC 8859-1 (<< alphabet
latin no 1 >>, latin-1). Il etait massivement adopte et pris en charge
par differents systemes et est remplace au fur et a mesure par Unicode.
Les caracteres d'ISO/IEC 8859-1 sont aussi les premiers
256 caracteresd'Unicode.
La prise en charge en console des autres jeux de caracteres
ISO/IEC 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
table de fonte du gestionnaire de console.
Voici une breve description des jeux de caracteres 8859 :
ISO/IEC 8859-1 (Latin-1)
Le latin-1 couvre de nombreuses langues d'Europe, comme
l'albanais, l'anglais, le basque, le danois, l'espagnol, le
feroien, le galicien, le gallois, l'irlandais, l'islandais,
l'italien, le norvegien, le portugais et le suedois. L'absences
de ligatures << IJ >> et << ij >> du neerlandais et << oe >> du
francais, ainsi que l'absence des guillemets ,,allemands"
etaient considerees tolerables.
ISO/IEC 8859-2 (Latin-2)
Le latin-2 prend en charge de nombreuses langues d'Europe
centrale et de l'Est utilisant l'alphabet latin comme
l'allemand, le bosniaque, le croate, le hongrois, le polonais,
le slovaque, le slovene et le tcheque. Remplacer les << > >>
et << > >> roumains par << s >> et << t >> etait considere
tolerable.
ISO/IEC 8859-3 (Latin-3)
Le latin-3 etait concu pour couvrir l'esperanto, le gallois, le
maltais et le turc, mais ISO/IEC 8859-9 l'a ensuite supplante
pour le turc.
ISO/IEC 8859-4 (Latin-4)
Le latin-4 a introduit des lettres pour les langues de l'Europe
du Nord comme l'estonien, le letton et le lituanien, mais il a
ete supplante par ISO/IEC 8859-10 et ISO/IEC 8859-13.
ISO/IEC 8859-5
Alphabet cyrillique prenant en charge le bulgare, le bielorusse,
le macedonien, le russe, le serbe et (presque completement)
l'ukrainien. Il n'a jamais ete beaucoup utilise, consultez les
remarques concernant KOI8-R et KOI-U ci-dessous.
ISO/IEC 8859-6
Avait ete cree pour l'arabe. La table ISO/IEC 8859-6 est une
fonte de largeur fixe de formes de lettre distinctes, mais un
affichage correct doit combiner les lettres en utilisant leurs
formes initiale, centrale et finale.
ISO/IEC 8859-7
Avait ete cree pour le grec moderne en 1987 et mis a jour en
2003.
ISO/IEC 8859-8
Prend en charge l'hebreu moderne sans diacritiques (signes de
ponctuation). Les diacritiques et l'hebreu biblique dans son
ensemble etaient en dehors de la portee de ce jeu de caracteres.
ISO/IEC 8859-9 (Latin-5)
Il s'agit d'une variante du latin-1 qui remplace les lettres
islandaises rarement utilisees par des lettres turques.
ISO/IEC 8859-10 (Latin-6)
Le latin-6 ajoutait les lettres inuit (Groenland) et same
(lapon) qui manquaient au latin-4 pour couvrir toute la zone
nordique.
ISO/IEC 8859-11
Prend en charge l'alphabet thai et est presque identique a la
norme TIS-620.
ISO/IEC 8859-12
Ce jeu de caracteres n'existe pas.
ISO/IEC 8859-13 (Latin-7)
Prend en charge les langues des pays baltes, en particulier les
caracteres lituaniens absents du latin-4.
ISO/IEC 8859-14 (Latin-8)
Jeu de caracteres celtique, couvrant le breton, le cornique, le
gaelique, le gallois, l'irlandais ancien et le mannois.
ISO/IEC 8859-15 (Latin-9)
Le latin-9 est similaire au latin-1 largement utilise mais
remplace les symboles les moins communs par le symbole euro et
les lettres francaises et finlandaises qui manquaient au
latin-1.
ISO/IEC 8859-16 (Latin-10)
Ce jeu de caracteres couvre de nombreuses langues d'Europe du
Sud-Est et, ce qui est plus important, prend mieux en charge le
roumain que le latin-2.
KOI8-R et KOI8-U
Le KOI8-R est un jeu de caracteres non ISO tres repandu en Russie avant
Unicode. La premiere moitie correspond a l'ASCII, la seconde est un jeu
de caracteres cyrilliques un peu mieux concu que l'ISO/IEC 8859-5. Le
KOI8-U, base sur le KOI8-R, a une meilleure prise en charge de
l'ukrainien. Aucun de ces jeux n'est compatible avec l'ISO/IEC 2022,
contrairement aux normes ISO/IEC ISO-8859.
La prise en charge du KOI8-R en console est disponible sous Linux, a
l'aide d'utilitaires en mode utilisateur qui modifient la
correspondance des touches du clavier, la table graphique EGA et
utilisent une projection personnalisee de la table de fonte du
gestionnaire de console.
GB 2312
GB 2312 est le principal jeu de caracteres normalise en Chine, 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 et le GB 2312. Remarquez que l'EUC-CN est
souvent appele GB, GB 2312 ou CN-GB.
Big5
Big5 etait 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 sur-ensemble 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
etaient largement utilises a Taiwan et Hong Kong. Il n'est pas
compatible ISO/IEC 2022.
JIS X 0208
JIS X 0208 est un jeu de caracteres normalise au Japon. Bien qu'il y
ait plusieurs jeux de caracteres normalises au Japon, (comme
JIS X 0201, JIS X 0212 et JIS X 0213), celui-ci est le plus important.
Les caracteres sont projetes dans une matrice 94x94 de deux octets,
dont chaque octet est dans l'intervalle 0x21-0x7E. Remarquez que
JIS X 0208 est un jeu de caracteres, pas un encodage. Cela 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/IEC 2022-JP. EUC-JP est le plus important
encodage sous Linux et inclut l'ASCII 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 normalise en Coree. 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/IEC 2022-KR. EUC-KR est l'encodage le plus important sous Linux et
inclut l'ASCII et le KS X 1001. KS C 5601 est un ancien nom pour le
KS X 1001.
ISO/IEC 2022 et ISO/IEC 4873
Les normes ISO/IEC 2022 et ISO/IEC 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).
Plusieurs encodages de caracteres bases sur ISO/IEC 2022 ont ete
definis, en particulier pour le japonais.
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
suites ^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 suite 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 de la norme ISO/IEC 2375
International Register of Coded Character Sets. Par exemple, ESC ( @
selectionne le jeu de caractere ISO/IEC 646 en tant que G0, ESC ( A
selectionne le jeu normalise au Royaume-Uni (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 suite 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 suite
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/IEC 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.
TIS-620
Le TIS-620 est un jeu de caractere normalise en Thailande, et est un
sur-ensemble de l'ASCII. De la meme facon que la serie des
ISO/IEC 8859, les caracteres thais sont projetes dans l'intervalle
0xA1-0xFE.
Unicode
L'Unicode (ISO/IEC 10646) est une norme destinee 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, Unicode est
habituellement code en interne sur 32 bits, ou par des series d'entiers
16 bits (UTF-16) (ne necessitant deux entiers 16 bits que pour des
caracteres rares) ou par une serie d'octets 8 bits (UTF-8).
Linux represente l'Unicode en utilisant le format de transfert sur
8 bits (UTF-8). L'UTF-8 est un encodage 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 ou x des bits a 0, 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 l'encodage, 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 encoder les 31 bits de l'ISO/IEC 10646 cette
progression continue jusqu'a des codes sur 6 octets.
Pour la plupart des textes en ISO/IEC 8859, cela signifie que les
caracteres en dehors de l'ASCII sont desormais encodes sur deux octets.
Cela tend a allonger la taille des fichiers textes ordinaires de un a
deux pourcents. 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/IEC 8859-1) vers l'Unicode, mais une
conversion generique necessite l'utilisation de tables de conversion
pouvant etre assez larges pour des codes sur 16 bits.
Remarquez que l'UTF-8 se synchronise automatiquement : 10xxxxxx est 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 d'octet NULL (<< \0 >>) ou << / >> faisant partie d'un code plus
grand.
Comme l'ASCII, et, en particulier, l'octet NULL et << / >>, ne sont
modifies, 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. Cela
signifie que pour une console Linux en mode UTF-8, un jeu de caracteres
avec 512 symboles differents peut etre utilise. Ce n'est pas assez pour
le japonais, le chinois ou le coreen, mais c'est generalement suffisant
pour toutes les autres utilisations.
VOIR AUSSI
iconv(1), ascii(7), iso_8859-1(7), unicode(7), utf-8(7)
TRADUCTION
La traduction francaise de cette page de manuel a ete creee par
Christophe Blaess , Stephan Rafin
, Thierry Vignaud ,
Francois Micaux, Alain Portal , Jean-Philippe
Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas
Huriaux , Nicolas Francois
, Florentin Duneau
, Simon Paillard , Denis Barbier , David Prevot
et Gregoire Scano
Cette traduction est une documentation libre ; veuillez vous reporter a
la GNU General Public License version 3
concernant les conditions
de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE.
Si vous decouvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message a .
Pages du manuel de Linux 6.06 28 janvier 2024 charsets(7)