Faites la paix avec Unicode

Un article de Haypo.

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

Sommaire

[modifier] Interopérabilité et Unicode

Le stockage et l'échange de texte sous forme électronique existe depuis que l'informatique existe. En 1959, DEC invente RADIX-50 : un charset de 40 caractères qui comporte les lettres majuscules, chiffres de 0 à 9, espace, point, pourcent et dollar. Pour des questions de place, plusieurs caractères étaient stockés dans un seul mot mémoire.

Petit à petit les charsets vont passer à 6 bits (charset SIXBIT) : taille idéale pour les PDP de l'époque car un mot mémoire ayant une taille de 36 bits pouvait stocker 6 caractères. Puis en 1968, le standard connu de tous, l'ASCII (American Standard Code for Information Interchange), est publié : il utilise 7 bits pour stocker 95 caractères et de nombreux codes de contrôle. Petit à petit, ce charset va s'imposer partout... sauf sur les mainframes d'IBM qui utilisent le charset EBCDIC (8 bits), mais c'est une autre histoire.

ASCII est suivi d'une période noire pour l'interopérabilité. Chaque pays crée sa norme pour disposer de ses caractères : "àéùîç..." en France, "ßäöü..." en Allemagne, "åæø..." en Norvège, etc. Microsoft invente les « codes de page » pour MSDOS : chaque pays ou groupement de pays a son code pour disposer de caractère nationaux. Malheureusement, il n'était pas possible d'utiliser simultanément deux pages de code et donc fatalement des conflits apparaissaient. L'organisme ISO publie pas moins de quinze standards ISO 8859. Le plus célèbre est l'ISO 8859-1, destinée à l'Europe de l'Ouest, est utilisé par défaut dans de nombreux formats de fichier et sur Internet. L'ISO 8859-15 est sa version moderne qui contient notamment le caractère euro (€). Mais de très nombreux autres charsets vont émerger : la série JIS pour le japonais, l'ISCII pour l'hindî, Big5 pour le mandarin, KOI-7 pour l'alphabet cyrillique (russe, ukrainien, serbe, ...), TIS 620 pour le thailandais, etc.

Tout ces encodages rendaient l'échange de documents très inconfortable car selon le charset, certaines lettres étaient remplacées par des caractères de ponctuation. Pour répondre à cette problématique d'interopérabilité, la norme ISO 10646 a été écrite : elle associe un code unique pour chaque lettre et vise la compatibilité avec les charsets existant. L'année suivante, le consorsium Unicode va être crée. Il va travaille d'abord parallèlement à l'ISO 10646, puis petit à petit ces deux projets fusionnent. Unicode n'est pas qu'une liste de caractère. Il ajoute des recommandations sur la manière de dessiner le texte, sur la façon de manipuler le texte bidirectionnel (ex: l'arabe s'écrit de droite gauche et les chiffres arabes de gauche à droite), etc. La norme actuelle, Unicode 4.1, nécessite 21 bits pour stocker un seul caractère (environ deux millions de codes différents) mais il faut savoir qu'il existe de très nombreux codes inutilisés.

Pour stocker de l'Unicode, il existe globalement deux encodages : UTF-8 et UTF-16. Le premier utilise des octets : les caractères ASCII utilisent un octet par caractère, et les autres caractères ont une longue variable allant de 2 à 4 octets. L'encodage UTF-16 stocker les caractères dans 2 ou 4 octets. Toujours pour une question d'interopérabilité, l'encodage UTF-8 est préféré car il ne dépend pas de l'ordre des octets en mémoire (little endian ou big endian).

[modifier] Configurer son poste de travail

[modifier] Configurer son clavier

Touche compose

[modifier] Installer des polices de caractères

Polices de caractère

[modifier] Configurer sa locale

dpkg-reconfigure locales

[modifier] Unicode en pratique