La fabuleuse histoire d'Unicode

Un article de Haypo.

Retour à la page précédente Retour à l'accueil des codages

Sommaire

[modifier] Bref historique des télécommunications

L'échange de message sur de grandes distances est un besoin très ancien. Le premier système a été l'échange de signaux de fumée qu'on peut voir dans la bande dessinée Luky Luke. En 1794, Claude Chappe invente un système de communication optique appelé la Tour de Chappe. C'est le premier système qui utilise une norme de communication avec des codes de contrôle, une correspondance entre un code et un ou plusieurs mot, etc. En 1832, Samuel Morse invente l'alphabet morse qui utilise trois types de signaux sonores (signal court, signal long, silence) pour transmettre des lettres et des chiffres.

[modifier] Les dinosaures (5 puis 6 bits)

En 1874, Émile Baudot invente le code Baudot, un de premiers codes binaires, transmis par un clavier à cinq touches (5 bits) : ce qui donne 32 codes. Ce code sera utilisé dans le réseau Télex (en gros, un réseau de télégraphes électriques).

Les premiers ordinateurs (TX-0, TX-2 et la série PDP de DEC) utilisaient des mots mémoire d'une taille multiple de 6 bits : 12, 18 et 36 bits. Divers encodages ont été inventés :

  • 1959 : RADIX-50 (qui signifit base 40, 50 étant écrit en octal) comporte 40 codes ;
  • 1968 : SIXBIT : répertoire de 64 codes (6 bits), rentre tout pile dans des mots mémoires ayant une taille multiple de 6.

Cartes perforées. Code de page.

[modifier] ASCII le précurseur (7 bits)

En 1968, le standard ASCII (American Standard Code for Information Interchange) est publié. Il possède 128 codes (7 bits). Quelques valeurs courantes :

  • ASCII 10 : Saut de ligne abrégé « LF » pour Line Feed
  • ASCII 32 : Espace
  • ASCII 65 : Lettre A majuscule

ASCII a été standardisé en 1968 sous le nom « ANSI X3.4-1968 ». Puis vinrent les mises à jour : ANSI X3.4-1977 et finalement ANSI X3.4-1986. On peut enfin le rencontrer sous le nom « US-ASCII ». Il existe en fait des dizaines de variantes de l'ASCII, mais c'est essentiellement la signification des codes de contrôles (« caractères non imprimables ») qui change.

ISO 646 est une variante de l'ASCII.

[modifier] La famille ISO 8859 et autres encodages 8 bits

[modifier] Anciens charsets

Le premier charset sur 8 bits était EBCDIC (Extended Binary Coded Decimal Interchange Code), inventé par IBM en 1963 pour ses mainframes. Il en existe 6 versions sans compter les variantes des concurrents et plusieurs dizaines de "codepages" pour chaque pays ! En 1969, Braille ASCII,ou plus exactement le North American Braille ASCII Code, fait son apparition. Il comporte 64 codes pour représenter le système inventé en 1829 par Louis Braille.

[modifier] La famille ISO 8859

Année Norme Description Variante
1987 ISO 8859-1
(Latin-1)
Europe de l'Ouest : Allemand, Français, Italien, … Windows-1252
1987 ISO 8859-2
(Latin-2)
Europe de l'Est : Croate, Polonais, Serbe, … Windows-1250
1988 ISO 8859-3
(Latin-3)
Europe du Sud : Turc, Malte, Espéranto,
remplacé aujourd'hui par ISO 8859-9, plus pratique
-
1988 ISO 8859-4
(Latin-4)
Europe du Nord : Lituanien, Groenlandais, Lapon, …,
remplacé aujourd'hui par l'ISO 8859-10
-
1988 ISO 8859-5 Alphabet cyrillique : Bulgare, Biélorusse, Russe et Ukrainien Famille KOI
1987 ISO 8859-6 Arabe Windows-1256
1987 ISO 8859-7 Grec Windows-1253
1988 ISO 8859-8 Hébreu Windows-1255
1989 ISO 8859-9
(Latin-5)
Langues turques, plus utilisé que ISO 8859-3,
car identique à ISO 8859-1 hormis 6 caractères
Windows-1254
1992 ISO 8859-10
(Latin-6)
Langues scandinaves,
version moderne de l'ISO 8859-4
-
2001 ISO 8859-11 Thaïlandais, basé sur TIS 620 Windows-874
1998 ISO 8859-13
(Latin-7)
Langues baltes Windows-1257
1998 ISO 8859-14
(Latin-8)
Langues celtes -
1999 ISO 8859-15
(Latin-0, Latin-9)
Version moderne de l'ISO 8859-1 qui ajoute les lettres manquantes du français et finois, ainsi que l'euro Windows-1252
2001 ISO 8859-16
(Latin-10)
Europe du Sud-Est -

Notes :

  • les charsets Windows-XXXX sont parfois désignés par « cpXXXX », cp désignant Code Page ;
  • La norme 8859-12 n'est pas assignée.

[modifier] Autres charsets 8 bits

  • 1969 : JIS X 0201, japonais ;
  • 1986 : TIS 620 (Thai Industrial Standard 620), thailandais, possède 16 caractères à combiner (diacritics). Code page 874 et Mac OS Thai en dérivent ;
  • 1987 : KS X 1001 (KSC 5601, Wansung), coréen. Variantes : KS X 1003 et Code page 949 ;
  • 1989 : KS X 1002 (KSC 5636), extension de KS X 1001 ;
  • 1991 : ISCII (Indian Script Code for Information Interchange), indien ;
  • 1992 : VISCII (Vietnamese Standard Code for Information Interchange), vietnamien ;
    • Variante : Windows-1258 ;

L'alphabet cyrillique est principalement encodé avec le KOI, « Код Обмена Информацией » (code d'information) :

  • KOI-7 : un des premiers encodages (ASCII + quelques caractères) ;
  • KOI8-R : destiné au Russe ;
  • KOI8-U : destiné à l'Ukrainien ;
  • Autres variantes : ECMA-Cyrillic, KOI8-Unified, Code Page 1251, MacUkrainian, Bulgarian MIK, etc.

[modifier] Charsets 16 bits et à taille variable

[modifier] Japonais

La famille JIS ( Japanese Industrial Standards) :

  • 1978 : JIS X 0208 (16 bits) : contient en particulier 6355 caractères kanji, ainsi que des caractères katakana, hiragana, romaji, grec et cyrillic.
  • 1990 : JIS X 0212 (16 bits)
  • 2000 : JIS X 0213 (16 bits, table de 94x94 caractères)

L'autre principal encodage est Shift-JIS, développé par Microsoft. C'est un mélange entre JIS X 0208 et JIS X 0201 qui utilise un encodage avec un décalage pour passer d'un charset à l'autre. Code page 932 (ou Windows 31J) est une extension de Shift-JIS incluant des extensions de NEC et IBM.

[modifier] Chinois

Le charset le plus répandu en Chine est Big5 (大五碼, Big Five Encoding), inventé en 1984. C'est un charset sur 16 bits qui fonctionne comme Shift JIS et contient 13053 caractères chinois. L'implémentation de Microsoft est Code page 950.

Charsets « Guojia Biaozhun » (国家标准, signifie « standard national »), utilisent des tables de 94x94 caractères :

  • 1981 : GB2312, contient 6763 caractères chinois ;
  • 1993 : GBK ;
  • 2000 : GB 18030 ;

[modifier] Coréen

La famille KR (Korean standard) :

  • 1991 : KS X 1002 (KS C 5657) ;
  • 1991 : KS X 1004 (KS C 5620 ), partie coréenne de la norme ISO 2022 ;
  • 1995 : KS X 1005-1 (KS C 5861), basé sur Unicode 2.0

En 1997, tous les standards ont été renommés en « KS X ???? ».

[modifier] Autres

  • ISO 2022 : Unification des charsets CJK (Chinese, Japanese, Korean) qui utilisent des séquences d'échappement pour passer d'un charset à l'autre
  • EUC (Extended Unix Code) est un autre manière d'écrire les encodages CJK sous forme de tables de 94x94 ou 94x94x94 caractères ;

[modifier] Unicode

En 1990 naquit le standard ISO 10646 dont le premier brouillon date de 1989. Mais dès 1991, le Consorsium Unicode va travailler main dans la main avec ISO. Unicode est composé de deux parties : l'association code - glyphe, mais également une suite de recommandations sur l'implémentation des scripts.

Pour en savoir plus, quelques liens : Symbole_monétaire (Wikipédia), Unicode sur Wikipédia.

Historique des versions :

  • 1993 : ISO 10646-1:1993 ≈ Unicode 1.1 ;
  • 1991 : Unicode 1.0 ;
  • 1993 : Unicode 1.1 ;
  • 1996 : Unicode 2.0, passe de 65 536 caractères (possibles) à 1 112 064 caractères. ;
  • 1998 : Unicode 2.1 ;
  • 1999 : Unicode 3.0 ;
  • 2000 : ISO/IEC 10646-1:2000 ≈ Unicode 3.0 ;
  • 2001 : Unicode 3.1 ;
  • 2001 : ISO/IEC 10646-2:2001 ≈ Unicode 3.2 ;
  • 2002 : Unicode 3.2 ;
  • 2003 : ISO/IEC 10646:2003 ≈ Unicode 4.0 ;
  • 2003 : Unicode 4.0 ;
  • 2003 : ISO/IEC 10646:2003 Amendment 1 ≈ Unicode 4.1 ;
  • 2005 : Unicode 4.1 ;
  • 2006 : Unicode 5.0 (encore en cours de développement :-)).

http://en.wikipedia.org/wiki/TRON_(encoding)

http://en.wikipedia.org/wiki/Han_unification

[modifier] Annecdotes

[modifier] Symbole monétaire national

Symbole monétaire national : « ¤ ».

Le code EBCDIC, qui existait sur les mainframes avant l'ASCII, disposait d'une position (0x9f – hexadécimal – ; 0xA4 en ASCII) nommée signe monétaire et qui changeait selon les pays. Le procédé montra ses limites quand des indications de plafonnement de dépenses transmises par courrier électronique (circa 1980) et concernant des autorisations de dépenses en dollars se retrouvèrent en Angleterre sur les documents affichés et imprimés concerner les mêmes autorisations, mais en livres - ce qui était beaucoup plus confortable, mais désespéra quelques contrôleurs de gestion.

http://fr.wikipedia.org/wiki/Symbole_monétaire

[modifier] ISO-8859-1 et le français

Quand on regarde le charset ISO-8859-1 de près, on est frappé par l'absence des caractères œ et Œ (il manque aussi Ÿ, mais je ne l'ai jamais croisé celui-là). La raison est pourtant simple : l'employeur de l'un des rédacteurs de la norme, un grand fabricant d'imprimantes, n'avait pas inclus ces caractères dans ses imprimantes :-) Pourtant il existe plusieurs noms qui l'utilisent :

  • Haÿ-les-Roses (banlieu de Paris) ;
  • Taÿ-Pamart (nom de famille) ;
  • Œuvre majeure de l'œuf.

[modifier] JIS X 0201 et anti-slash

Le charset JIS X 0201 remplace l'anti-slash par « ¥ ». Ceci est plutôt gênant sous MS-Dos et Windows car ce caractère est utilisé comme séparateur de répertoire dans les nom de fichier : « C:\Program Files\ » s'affiche alors « C:¥Program Files¥" ».

[modifier] Organismes de standardisation

[modifier] Un peu de détente : l'ASCII Art

[modifier] Liens externes