charsets | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
NOM | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
DESCRIPTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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 : ISO-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 | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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 | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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 :
KOI8-R | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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 | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
KS X 1001 | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
GB 2312 | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Big5 | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
TIS 620 | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
UNICODE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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 d'octet nul (« \0 ») ou « / » pour introduire un code étendu.
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.
ISO 2022 et ISO 4873 | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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 | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
TRADUCTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 22 novembre 1996 et révisée le 6 juin 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 7 charsets ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Sommaire | Début | Suivant | Sommaire | Préc.page.lue | Accueil |