charsets - Normes de jeux de caractères et internationalisation
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 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.
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 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 8859 is a series of 15 8-bit character sets, all of which have ASCII in
their low (7-bit) half, invisible control characters in positions 128 to 159,
and 96 fixed-width graphics in positions 160–255.
Of these, the most important is ISO 8859-1 ("Latin Alphabet No. 1" /
Latin-1). It was widely adopted and supported by different systems, and is
gradually being replaced with Unicode. The ISO 8859-1 characters are also the
first 256 characters of Unicode.
La prise en charge en 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.
Here are brief descriptions of each character set:
- 8859-1 (latin-1)
- Latin-1 covers many European languages such as Albanian,
Basque, Danish, English, Faroese, Galician, Icelandic, Irish, Italian,
Norwegian, Portuguese, Spanish, and Swedish. The lack of the ligatures
Dutch IJ/ij, French œ, and old-style
„German“ quotation marks was considered tolerable.
- 8859-2 (latin-2)
- Latin-2 supports many Latin-written Central and East
European languages such as Bosnian, Croatian, Czech, German, Hungarian,
Polish, Slovak, and Slovene. Replacing Romanian ș/ț with
ş/ţ was considered tolerable.
- 8859-3 (latin-3)
- Le latin-3 était conçu pour couvrir
l’espéranto, le gallois, le maltais et le turc, mais 8859-9
l’a ensuite supplanté pour le turc.
- 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 8859-10 et 8859-13.
- 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.
- 8859-6
- Avait été créé pour l'arabe. La
table 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.
- 8859-7
- Avait été créé pour le grec
moderne en 1987 et mis à jour en 2003.
- 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.
- 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 ajoutait les lettres inuit (Groënland) et
same (lapon) qui manquaient au latin-4 pour couvrir toute la zone
nordique.
- 8859-11
- Prend en charge l’alphabet thaï et est
presque identique à la norme TIS-620.
- 8859-12
- This character set does not exist.
- 8859-13 (latin-7)
- Prend en charge les langues des pays baltes, en particulier
les caractères lituaniens absents du latin-4.
- 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.
- 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.
- 8859-16 (latin-10)
- This character set covers many Southeast European
languages, and most importantly supports Romanian more completely than
Latin-2.
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 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-2022, contrairement aux normes 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 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 was a popular character set in Taiwan to express traditional Chinese. (Big5
is both a character set and an encoding.) It is a superset of ASCII. Non-ASCII
characters are expressed in two bytes. Bytes 0xa1–0xfe are used as
leading bytes for two-byte characters. Big5 and its extension were widely used
in Taiwan and Hong Kong. It is not ISO 2022 compliant.
JIS X 0208 is a Japanese national standard character set. Though there are some
more Japanese national standard character sets (like JIS X 0201, JIS X 0212,
and JIS X 0213), this is the most important one. Characters are mapped into a
94x94 two-byte matrix, whose each byte is in the range 0x21–0x7e. Note
that JIS X 0208 is a character set, not an encoding. This means that JIS X
0208 itself is not used for expressing text data. JIS X 0208 is used as a
component to construct encodings such as EUC-JP, Shift_JIS, and ISO-2022-JP.
EUC-JP is the most important encoding for Linux and includes ASCII and JIS X
0208. In EUC-JP, JIS X 0208 characters are expressed in two bytes, each of
which is the JIS X 0208 code plus 0x80.
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-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.
Les normes 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) pris en charge par le noyau Linux et
xterm(1). Plusieurs encodages de caractères basés sur
ISO 2022 ont été définis, en particulier pour le
japonais.
There are 4 graphic character sets, called G0, G1, G2, and G3, and one of them
is the current character set for codes with high bit zero (initially G0), and
one of them is the current character set for codes with high bit one
(initially G1). Each graphic character set has 94 or 96 characters, and is
essentially a 7-bit character set. It uses codes either 040–0177
(041–0176) or 0240–0377 (0241–0376). G0 always has size
94 and uses codes 041–0176.
Switching between character sets is done using the shift functions
^N (SO
or LS1),
^O (SI or LS0), ESC n (LS2), ESC o (LS3), ESC N (SS2), ESC O
(SS3), ESC ~ (LS1R), ESC } (LS2R), ESC | (LS3R). The function LS
n
makes character set G
n the current one for codes with high bit zero.
The function LS
nR makes character set G
n the current one for
codes with high bit one. The function SS
n makes character set
G
n (
n=2 or 3) the current one for the next character only
(regardless of the value of its high order bit).
Un jeu de 94 caractères est désigné comme jeu G
n 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 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
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 G
n 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 G
n 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.
ISO 4873 stipulates a narrower use of character sets, where G0 is fixed (always
ASCII), so that G1, G2, and G3 can be invoked only for codes with the high
order bit set. In particular,
^N and
^O are not used anymore,
ESC ( xx can be used only with xx=B, and ESC ) xx, ESC * xx, ESC + xx are
equivalent to ESC - xx, ESC . xx, ESC / xx, respectively.
TIS-620 is a Thai national standard character set and a superset of ASCII. In
the same fashion as the ISO 8859 series, Thai characters are mapped into
0xa1–0xfe.
L'Unicode (ISO 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 10646 cette progression
continue jusqu'à des codes sur 6 octets.
Pour la plupart des textes en ISO 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 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.
Note that UTF-8 is self-synchronizing: 10xxxxxx is a tail, any other byte is the
head of a code. Note that the only way ASCII bytes occur in a UTF-8 stream, is
as themselves. In particular, there are no embedded NULs ('\0') or '/'s that
form part of some larger code.
Since ASCII, and, in particular, NUL and '/', are unchanged, the kernel does not
notice that UTF-8 is being used. It does not care at all what the bytes it is
handling stand for.
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.
iconv(1),
ascii(7),
iso_8859-1(7),
unicode(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]