charsets
Table des matières
Retour à l'index
NOM
charsets - Normes de jeux de caractères et internationalisation
DESCRIPTION
Cette page de manuel présente différentes normes de jeux de caractères et la
façon de les utiliser sous Linux avant qu’Unicode ne devienne
ubiquitaire. Certains de ces renseignements sont encore utiles aux personnes
travaillant avec des systèmes ou des documents anciens.
ASCII, GB 2312, ISO/IEC 8859, JIS, KOI8-R, KS et Unicode font partie des
normes présentées.
Un accent particulier est mis sur les jeux de caractères qui étaient
véritablement utilisés dans les paramètres régionaux, et non sur la myriade
de jeux de caractères provenant d'autres systèmes.
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 aussi
connu sous le nom US-ASCII. Il est décrit actuellement dans la norme
ISO/IEC 646:1991 IRV (International Reference Version).
Différentes variantes d'ASCII sont apparues, remplaçant le dollar par
d'autres symboles monétaires et la ponctuation par des caractères accentués
pour couvrir l'allemand, le français, l'espagnol et d'autres langues en
7 bits. Elles sont toutes obsolètes, la glibc ne gère que les paramètres
régionaux dont le jeu de caractères 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 systèmes
modernes utilisant l’UTF-8.
ISO/IEC 8859
L'ISO/IEC 8859 est une série de 15 jeux de caractères 8 bits contenant
l'ASCII 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 est l'ISO/IEC 8859-1 (« alphabet latin
nº 1 », latin-1). Il était massivement adopté et pris en charge par
différents systèmes et est remplacé au fur et à mesure par Unicode. Les
caractères d’ISO/IEC 8859-1 sont aussi les premiers
256 caractèresd’Unicode.
La prise en charge en console des autres jeux de caractères ISO/IEC 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 :
- 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 féroïen, le galicien, le
gallois, l'irlandais, l'islandais, l'italien, le norvégien, le portugais et
le suédois. L’absences de ligatures « IJ » et « ij » du néerlandais et « œ »
du français, ainsi que l'absence des guillemets „allemands“ étaient
considérées tolérables.
- 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 slovène et le tchèque. Remplacer
les « ș » et « ț » roumains par « ş » et « ţ » était considéré tolérable.
- ISO/IEC 8859-3 (Latin-3)
-
Le latin-3 était conçu pour couvrir l’espéranto, le gallois, le maltais et
le turc, mais ISO/IEC 8859-9 l’a ensuite supplanté 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 été supplanté par
ISO/IEC 8859-10 et ISO/IEC 8859-13.
- ISO/IEC 8859-5
-
Alphabet cyrillique prenant en charge le bulgare, le biélorusse, le
macédonien, le russe, le serbe et (presque complètement) l’ukrainien. Il n’a
jamais été beaucoup utilisé, consultez les remarques concernant KOI8-R et
KOI-U ci-dessous.
- ISO/IEC 8859-6
-
Avait été créé 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 été créé pour le grec moderne en 1987 et mis à jour en 2003.
- ISO/IEC 8859-8
-
Prend en charge l'hébreu moderne sans diacritiques (signes de
ponctuation). Les diacritiques et l'hébreu biblique dans son ensemble
étaient en dehors de la portée de ce jeu de caractères.
- ISO/IEC 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.
- ISO/IEC 8859-10 (Latin-6)
-
Le latin-6 ajoutait les lettres inuit (Groënland) et same (lapon) qui
manquaient au latin-4 pour couvrir toute la zone nordique.
- ISO/IEC 8859-11
-
Prend en charge l’alphabet thaï et est presque identique à la norme TIS-620.
- ISO/IEC 8859-12
-
Ce jeu de caractères n’existe pas.
- ISO/IEC 8859-13 (Latin-7)
-
Prend en charge les langues des pays baltes, en particulier les caractères
lituaniens absents du latin-4.
- ISO/IEC 8859-14 (Latin-8)
-
Jeu de caractères celtique, couvrant le breton, le cornique, le gaélique, le
gallois, l’irlandais ancien et le mannois.
- ISO/IEC 8859-15 (Latin-9)
-
Le latin-9 est similaire au latin-1 largement utilisé mais remplace les
symboles les moins communs par le symbole euro et les lettres françaises et
finlandaises qui manquaient au latin-1.
- ISO/IEC 8859-16 (Latin-10)
-
Ce jeu de caractères 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 caractères non ISO très répandu en Russie avant
Unicode. La première moitié correspond à l'ASCII, la seconde est un jeu de
caractères cyrilliques un peu mieux conçu que l'ISO/IEC 8859-5. Le KOI8-U,
basé 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, à l’aide
d’utilitaires en mode utilisateur 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.
GB 2312
GB 2312 est le principal jeu de caractères normalisé en Chine, 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 et le GB 2312. Remarquez que l'EUC-CN est souvent appelé GB, GB 2312
ou CN-GB.
Big5
Big5 était 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 sur-ensemble 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 étaient largement utilisés à Taïwan
et Hong Kong. Il n'est pas compatible ISO/IEC 2022.
JIS X 0208
JIS X 0208 est un jeu de caractères normalisé au Japon. Bien qu'il y ait
plusieurs jeux de caractères normalisés au Japon, (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 94x94 de deux octets, dont chaque octet est
dans l'intervalle 0x21-0x7E. Remarquez que JIS X 0208 est un jeu de
caractères, pas un encodage. Cela 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/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 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 normalisé en Corée. Comme dans le
JIS X 0208, les caractères sont projetés dans une matrice 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/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 décrivent un modèle de contrôle
des fontes basé sur le fonctionnement du VT100. Ce modèle est
(partiellement) pris en charge par le noyau Linux et xterm(1). Plusieurs
encodages de caractères basés sur ISO/IEC 2022 ont été définis, en
particulier pour le japonais.
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
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 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 suite 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 de la norme ISO/IEC 2375
International Register of Coded Character Sets. Par exemple, ESC ( @
sélectionne le jeu de caractère ISO/IEC 646 en tant que G0, ESC ( A
sélectionne le jeu normalisé au Royaume-Uni (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 suite 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 multioctets est désigné 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 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/IEC 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.
TIS-620
Le TIS-620 est un jeu de caractère normalisé en Thaïlande, et est un
sur-ensemble de l'ASCII. De la même façon que la série des ISO/IEC 8859,
les caractères thaïs sont projetés dans l'intervalle 0xA1-0xFE.
Unicode
L'Unicode (ISO/IEC 10646) est une norme destinée à 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, Unicode est habituellement
codé en interne sur 32 bits, ou par des séries d'entiers 16 bits (UTF-16)
(ne nécessitant deux entiers 16 bits que pour des caractères rares) ou par
une série d'octets 8 bits (UTF-8).
Linux représente l'Unicode en utilisant le format de transfert sur 8 bits
(UTF-8). L'UTF-8 est un encodage à 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 ou 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
l’encodage, 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 encoder
les 31 bits de l'ISO/IEC 10646 cette progression continue jusqu'à des codes
sur 6 octets.
Pour la plupart des textes en ISO/IEC 8859, cela signifie que les
caractères en dehors de l'ASCII sont désormais encodés sur deux octets. Cela
tend à allonger la taille des fichiers textes ordinaires de un à deux
pourcents. Pour le russe ou le grec, la taille des fichiers textes
ordinaires est généralement doublée, car la plupart des caractères sont en
dehors de l'ASCII. Pour les utilisateurs japonais, cela signifie que les
codes sur 16 bits couramment employés prendront désormais 3 octets. Des
conversions algorithmiques sont possibles depuis certains jeux de caractères
(en particulier ISO/IEC 8859-1) vers l'Unicode, mais une conversion
générique nécessite l'utilisation de tables de conversion pouvant être 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 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 d’octet NULL (« \0 »)
ou « / » faisant partie d'un code plus grand.
Comme l'ASCII, et, en particulier, l’octet NULL et « / », ne sont
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. Cela signifie que pour une console
Linux en mode UTF-8, un jeu de caractères avec 512 symboles différents peut
être utilisé. 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.
VOIR AUSSI
iconv(1), ascii(7), iso_8859-1(7), unicode(7), utf-8(7)
TRADUCTION
La traduction française de cette page de manuel a été créée par
Christophe Blaess <https://www.blaess.fr/christophe/>,
Stéphan Rafin <stephan.rafin@laposte.net>,
Thierry Vignaud <tvignaud@mandriva.com>,
François Micaux,
Alain Portal <aportal@univ-montp2.fr>,
Jean-Philippe Guérard <fevrier@tigreraye.org>,
Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>,
Julien Cristau <jcristau@debian.org>,
Thomas Huriaux <thomas.huriaux@gmail.com>,
Nicolas François <nicolas.francois@centraliens.net>,
Florentin Duneau <fduneau@gmail.com>,
Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
Denis Barbier <barbier@debian.org>,
David Prévot <david@tilapin.org>
et
Grégoire Scano <gregoire.scano@malloc.fr>
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 à
Index
- NOM
-
- DESCRIPTION
-
- ASCII
-
- ISO/IEC 8859
-
- KOI8-R et KOI8-U
-
- GB 2312
-
- Big5
-
- JIS X 0208
-
- KS X 1001
-
- ISO/IEC 2022 et ISO/IEC 4873
-
- TIS-620
-
- Unicode
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 05:06:36 GMT, September 19, 2025