Provided by: manpages-fr_3.57d1p1-1_all bug

NOM

       charsets - Jeux de caractères et internationalisation pour les programmeurs

DESCRIPTION

       Linux  est un système d'exploitation international. Plusieurs de ses utilitaires et de ses
       gestionnaires de périphériques (y compris le gestionnaire de console) prennent  en  charge
       les  jeux  de  caractères  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'hébreu.

       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 normes  présentées  sont  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 paramètres  régionaux,  et  non
       sur la myriade de jeux de caractères provenant d'autres systèmes.

       Une liste complète des jeux de caractères utilisés dans les paramètres régionaux 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 basculé vers ISO-8859-16.

   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 décrit actuellement dans la
       norme ECMA-6.

       Différentes variantes d'ASCII existent, qui remplacent 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 surensemble d'ASCII
       (ces jeux de caractères sont aussi appelés ISO-646, un cousin proche d'ASCII qui a  permis
       de remplacer ces caractères).

       Comme Linux est écrit pour du matériel conçu aux États-Unis, il prend en charge l'ASCII de
       manière native.

   ISO 8859
       L'ISO 8859 est une série de 10 jeux de caractères 8 bits, contenant l'ASCII US  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 8859-1 (latin-1). Il est pris en  charge  de
       manière  native par le gestionnaire de console Linux, assez bien pris en charge par X11R6,
       et c'est le jeu de caractères de base pour l'HTML.

       La prise en charge 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 police du
       gestionnaire de console.

       Voici une brève description des jeux de caractères 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  férovingien,  le
              finnois,  le  français,  le  gallois,  le  néerlandais,  l'irlandais,  l'islandais,
              l'italien, le norvégien, le portugais et le suédois. Le manque  de  ligature  entre
              les  « ij »  néerlandais,  entre  les  « oe »  français,  et  l'absence des anciens
              guillemets „allemands“ est tolérable.

       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, slovène
              et tchèque.

       8859-3 (latin-3)
              Le latin-3 est utilisé 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
              obsolète, remplacé par 8859-10 (latin-6) et 8859-13 (latin-7).

       8859-5 L'alphabet  cyrillique est utilisé en bulgare, biélorusse, macédonien, russe, serbe
              et ukrainien. Les Ukrainiens prononcent la lettre « ghe » fermée, 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  caractères  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'hébreu  sans  niqqud  (diacritiques).  Les  niqqud  et  l'hébreu
              biblique  dans  son  ensemble sont en dehors de la portée de ce jeu de caractères ;
              sous Linux, UTF-8 est recommandé pour cela.

       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  ajoute  les  dernières  lettres inuit (Groënland) et sami (lappon) qui
              manquaient dans le latin 4 pour couvrir toute la zone nordique. La RFC 1345 indique
              un  latin 6  préliminaire et différent. Le sami nécessite en réalité plus d'accents
              que ceux proposés.

       8859-11
              Cela n'existe qu'en tant que proposition rejetée. Il s'agit d'une version identique
              au TIS-620, utilisé sous Linux pour le thaï.

       8859-12
              Ce  jeu  n'existe  pas.  On  a proposé de l'utiliser pour le vietnamien, mais il ne
              tient pas dans  les  96 caractères  (sans  combinaisons)  offerts  par  l'ISO 8859.
              L'UTF-8  est  le  jeu  de  caractère  préféré pour l'utilisation du vietnamien sous
              Linux.

       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 gaélique et le gallois. Ce jeu contient les
              caractères pointés nécessaires pour l'irlandais ancien.

       8859-15 (latin-9)
              Dans ce jeu se trouvent le symbole euro et les ligatures françaises 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 caractères non ISO très répandu  en  Russie.  La  première  moitié
       correspond  à l'ASCII US, la seconde est un jeu de caractère cyrillique un peu mieux conçu
       que l'ISO 8859-5. Le KOI8-U est un jeu commun, basé 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 à l'ISO-8859.

       La prise en charge 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 police du  gestionnaire  de
       console.

   JIS X 0208
       JIS X 0208  est un jeu de caractères standard japonais. Bien qu'il y ait plusieurs jeux de
       caractères standard japonais, (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 de deux octets 94x94,
       dont chaque octet est dans l'intervalle 0x21-0x7E. Notez 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-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 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  standard  coréen.  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 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  caractères chinois, 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 US et le GB 2312.  Notez  que  l'EUC-CN  est  souvent  appelé  GB,
       GB 2312 ou CN-GB.

   Big5
       Big5  est  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 surensemble 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  sont  largement
       utilisés à Taiwan et Hong-Kong. Il n'est pas compatible ISO 2022.

   TIS-620
       Le  TIS-620  est un jeu de caractère standard thaï, et un surensemble de l'ASCII US. Comme
       la série des ISO 8859, les caractères thaïs sont projetés dans l'intervalle 0xA1-0xFE.  Le
       TIS-620  est le seul jeu de caractères couramment utilisé sous Linux, hormis l'UTF-8, avec
       des caractères combinés.

   UNICODE
       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,  l'encodage
       Unicode  interne  est sur 32 bits, et en externe sur des séries d'entiers 16 bits (UTF-16)
       (qui ne nécessite deux entiers 16 bits  que  pour  des  caractères  rares)  ou  une  série
       d'octets  8 bits  (UTF-8). Des informations supplémentaires sur l'Unicode sont disponibles
       sur ⟨http://www.unicode.org⟩.

       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, cela signifie que les caractères avec le bit de poids
       fort à 1 sont désormais codés sur deux octets. Cela tend à allonger la taille des fichiers
       textes ordinaires de quelques pour cent (N.d.T. : il n'y a pas de problèmes de  conversion
       néanmoins,  car  les symboles Unicode correspondant aux caractères ISO-8859 conservent les
       mêmes valeurs, étendues avec 8 bits à zéro en tête). 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'UTF-8,  mais  une  conversion générique nécessite l'utilisation de tables de conversion,
       qui peuvent être 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 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 de caractères nuls (« \0 ») ou « / » faisant partie d'un code
       plus grand.

       Comme l'ASCII, et en particulier NUL et « / », n'est pas modifié, 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  qu'en  mode  UTF-8,  on  peut  utiliser  un  jeu de caractères 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.

       À  l'heure  actuelle,  le  pilote  de  la  console ne permet pas d'utiliser les caractères
       combinants. Les langues thaï, sioux, et toute autre nécessitant des caractères  combinants
       ne peuvent pas être utilisées sur la console.

   ISO 2022 et ISO 4873
       Les  normes  ISO 2022  et  4873  décrivent  un  modèle de contrôle des polices basé sur le
       fonctionnement du VT100. Ce modèle est (partiellement) pris en charge par le  noyau  Linux
       et xterm(1). Il est assez populaire au Japon et en Corée.

       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 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
       standard britannique (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 multioctets 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

       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.57 du projet man-pages Linux. Une description
       du projet et des  instructions  pour  signaler  des  anomalies  peuvent  être  trouvées  à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis    2010,    cette   traduction   est   maintenue   à   l'aide   de   l'outil   po4a
       <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du  projet
       perkamon <http://perkamon.alioth.debian.org/>.

       Christophe    Blaess    <http://www.blaess.fr/christophe/>   (1996-2003),   Alain   Portal
       <http://manpagesfr.free.fr/>  (2003-2006).  Julien  Cristau  et  l'équipe  francophone  de
       traduction de Debian (2006-2009).

       Veuillez     signaler     toute     erreur     de     traduction     en     écrivant     à
       <debian-l10n-french@lists.debian.org>  ou  par  un  rapport  de  bogue   sur   le   paquet
       manpages-fr.

       Vous  pouvez  toujours  avoir  accès  à la version anglaise de ce document en utilisant la
       commande « man -L C <section> <page_de_man> ».