De l'ASCII à l'Unicode.

Un ordinateur ne sait traiter q'une information de type vrai/faux, 0/1 que l'on appelle le bit. Ces informations binaires sont traitées par groupe de 8 bits, l' octet. Cette information binaire est traduite en claire sur un écran sous forme de caractères. Il faut donc associer à un ensemble de bit un caractère. Avec une suite de 8 bits, on peut obtenir 28 états différents soit 256 possibilités ce qui est suffisant pour codifier notre alphabet, les nombres, les signes de ponctuation, et ce  qui laisse encore de la place pour coder d'autres signes. Quand je surfe sur Internet et que mon navigateur lit une page HTML, les informations qui arrivent par la ligne téléphonique ne sont que des impulsions électriques de type 0/1 et c'est l'ordinateur qui va traduire ces impulsions en caractères plus ou moins lisibles selon le  jeux de caractères qui est utilisé.  Les jeux de caractères sont des tables qui établissent une correspondance entre un nombre et un caractère qu'il faut afficher. 

1963 : La norme iso-646  définit le code ASCII  (on prononce "aski") American Standard Code for Information Interchange.

Un des plus célèbres jeux de caractères a été le code ASCII, qui n'utilisait que 7 bits donc limité à 128 caractères. Dans le code ASCII les 32 premiers signes sont réservés pour des caractères de contrôle, par exemple pour des impulsions clavier comme le passage à la ligne.  http://www-clips.imag.fr/commun/bernard.cassagne/Introduction_ANSI_C/node137.html  Les signes entre 32 et 127 sont des signes pouvant être représentés parmi lesquels toutes les lettres, les chiffres et la ponctuation dont un américain a besoin (car le jeu de caractères ASCII vient naturellement des USA). Les codes de 48 à 57 représentent les chiffres, de 65 à 90 les majuscules, de 97 à 122  les minuscules.

Pour  trouver la valeur d'un signe il suffit d'additionner  les valeurs  de la ligne et  de  la colonne pour le signe concerné. Le A majuscule correspond à 60 (ligne) plus 5 (colonne) ce qui donne 65 pour ce signe. 
Le code 13 correspond à CR (carriage return) c'est à dire la touche entrée qui n'est pas un caractère affichable, de même que le code 32, SP (space) la barre d'espace.

Avec la touche ALT du clavier et le code tapé au clavier numérique je peux obtenir le signe désiré dans tout traitement de texte.

Au démarrage de l'ordinateur sous MSDOS, le clavier chargé (Keyb fr) utilise la partie commune de la table ASCII, c'est la page de code matériel, puis suivant le pays déclaré, des caractères spécifiques, rassemblés dans deux pages de code (437 -anglais- et 850 -multilingue-) qu'il faut préparer en renseignant les fichiers config.sys et autoexec.bat pour y déclarer des fichiers cpi. Windows n'utilise pas ces pages de code.

1985 : De l'ASCII à l'ANSI, tout se complique....

ASCII est un code américain devenu standard international, destiné à la langue anglaise, il ne contient pas de caractères accentués, ni de caractères spécifiques à une langue. Il a donc été étendu, en coopération avec IBM, à 8 bits (un octet) afin de pouvoir coder plus de caractères on parle de code ASCII étendu ou encore de DOS étendu car ce code est utilisé par tous les premiers PC fonctionnant sous MSDOS. Ce code étendu va varier pour se plier aux exigences des divers pays utilisant l'alphabet latin. 
Mais comme tout n'est jamais simple, suite à la sortie de Windows au milieu des années 1980, le code ANSI (American National Standards Institute  un organisme de normalisation américain représentant les États-Unis à l'ISO) soutenu par Microsoft va s'imposer dans Windows. Il  reprend pour les signes 0 à 127 le jeu de caractères ASCII et définit pour les valeurs entre 128 et 255 quantité de signes spéciaux parmi lesquels des signes importants de l'alphabet pour des langues répandues, par exemple les signes avec accent, les lettres avec accent en français ou les signes espagnols avec tilde et divers signes commerciaux ou scientifiques mais différents de l'ASCII étendu utilisé par MSDOS.

Conséquences : une grande pagaille  car si je veux faire un script qui lors d'une connexion réseau me recopie par exemple des informations dans le menu démarrer de Windows, ce script s'exécutant sous Dos, si je l'écris dans un éditeur de texte sous Windows le "é" du menu démarrer sera mal interprété et le script ne fonctionnera pas.

Si sous Windows je créé un fichier avec l'éditeur notepad (l'éditeur sous Windows) dans lequel je tape menu démarrer 

Sous Dos en ouvrant ce fichier avec edit (l'éditeur sous Dos) j'obtiens la lettre Ú à la place de é
A l'inverse si je tape dans l'éditeur MSDOS menu démarrer,
Dans le blocnote le é est remplacé par une , 

Ce que l'on peut vérifier sur ces tables de caractères.

Jeux de caractères DOS- et Ansi

Les 127 premiers codes du jeu de caractère DOS et ANSI sont identiques. Au delà les deux tables ne correspondent plus. 

Et que fait la police ?

Sous Windows une police est un modèle de description pour dessiner les signes sur les périphériques de sortie comme l'écran ou l'imprimante. Chaque système d'exploitation  contient  des polices système qui contiennent  exactement les signes qui sont définis dans le jeu de caractères sur lequel le système se base par défaut. Sous  Windows elle s'appelle system, mais il y en a beaucoup d'autres qui peuvent pour chaque code délivrer un tout autre dessin comme la police Wingdings (Wingdings). 

1988 : La norme ISO-8859  tente de remettre de l'ordre dans le jeu de caractères à 8 bits pour prendre en compte les particularités des langues européennes. 

Comme  la diversité ne permet pas de mettre tous les signes typographiques dans un seul jeu de 256 caractères, les langues ont été regroupées en familles, et la norme comprend 15 versions différentes de jeux de caractères développées par l'ECMA (European Computer Manufacturer's Association).  Six des jeux de caractères sur  les quinze définis, se réfèrent à des écritures  latines. Ces jeux de caractères sont nommés pour cette raison Latin-1 à Latin-6. 
Celui qui nous concerne est référencé ISO-8859-1 ou ISO-LATIN-1.

Comme pour le jeu de caractères ASCII qui voit ses 32 premiers caractères (valeurs des signes de 0 à 31) réservés pour des caractères de contrôle les jeux de caractères étendus de la famille iso font aussi l'économie d'une plage de signes. Il s'agit des 32 premiers signes au delà du domaine ASCII, donc des valeurs de caractères de 128 à 159. Les tableaux des différents jeux de caractères  représentent des signes de 160 à 255. Le signe avec la valeur 160 représentent dans tous ces jeux de caractères un espace imposé. ISO-8859-1

Ce jeu de caractères contient les signes spécifiques pour les langues de l'Europe de l'Ouest et d'Amérique. Il convient aux langues danoise, allemande, anglaise, finlandaise, française, irlandaise, islandaise, italienne, catalane, néerlandaise, norvégienne, portugaise, suédoise et espagnole. 

ISO-8859-2 (Latin-2) contient les signes spécifiques pour la plupart des langues de l'Europe centrale et slaves. Il convient aux langues croate, polonaise, roumaine, slovaque, slovène, tchèque et hongroise.

1991 : On n'arrête pas le progrès.

Un nouveau système de codage des caractères sur 16 bits  vise à  regrouper à lui seul les caractères latins (européens), cyrillique, grec, hébreux, arabes, chinois, japonais... C'est l'Unicode (http://www.unicode.org) qui veut que toute police doit pouvoir représenter par un numéro unique tous les caractères de la planète quelle que soit la plate-forme, le logiciel ou la langue. On doit ce standard Unicode à un consortium regroupant de nombreuses entreprises comme  Apple, HP, IBM,  Microsoft,  Sun.. et organisations agissant dans le domaine de l'informatique et des technologies de l'information. Les enjeux d'Unicode sont  la globalisation et le  développement logiciel au niveau planétaire. Exigé aujourd'hui par de nombreux standards ( XML, Java,  LDAP, CORBA 3.0, WML, etc), l'incorporation d'Unicode dans les applications client-serveur et les sites Internet permet une simplification de l'architecture et des systèmes de codage traditionnels. Avec Unicode, un logiciel ou un site Internet peut satisfaire sans modification les demandes de différentes plate-formes, langues et pays, afin d'échanger des caractères sans pertes de données.

Ce codage sur deux octets (16 bits) permet d'adresser  jusqu'à 65 536 caractères mais au fur et à mesure de la classification des signes on est passé d'un codage de deux à 4 octets (soit . 4.294.967.296 caractères). La version 3.0 de septembre 1999 listait déjà 49.194 caractères du monde entier. La  dernière version 3.2 d'Unicode proposé en 2000 classe 95 221 caractères, symboles et directives (comment insérer un système d'écriture de droite à gauche dans un système d'écriture de gauche à droite ?). Unicode se décline actuellement sous trois formes l'UTF-8, l'UTF-16 et l'UTF-32. (Le chiffre indiquant le nombre de bits sur lequel le caractère est codé).

Cela ne signifie pas cependant que toutes les places soient occupées. La plupart des polices actuellement ne sont livrées qu'avec une ou deux centaines de caractères. Windows 2000 et XP utilisent les polices Unicode que l'on peut visualiser avec le programme charmap.exe déjà présent dans Windows 95/98. 
Les nombres eux mêmes sont notés sous la forme U+XXXX. Le U veut dire unicode, et les quatre X pour un nombre hexadécimal chacun. Les valeurs de caractères dans ces tableaux sont donc représentées sous leur forme hexadécimale. Les différents signes du système Unicode ne sont pas rangés arbitrairement. Il y a des regroupements que l'on peut afficher en demandant Affichage Avancé et grouper par rangée Unicode.

XP et Windows 2000 disposent d'un éditeur de caractères privés.

L'éditeur de caractères privés permet de créer des lettres et des logos. Il se lance par Démarrer, Exécuter, le programme  eudcedit. On peut donc ajouter dans les parties libres ses propres caractères et lier cela à une  police ou à l'ensemble des polices.

XP et l'Unicode.

Sous XP avec le Bloc Note, on va pouvoir utiliser l'Unicode, c'est un choix de codage dans les options de sauvegardes. Si à la place du code Ansi on choisit Unicode, le fichier ne sera pas relu correctement dans le Bloc Note de Windows 98.

Sous XP quand on exporte des clés de la base de registre ils sont par défaut exportés en unicode. Pour différencier ces fichiers reg sauvegardé en Unicode sous XP de ceux de Windows98, la première ligne sera Windows Registry Editor Version 5.0 0 sous XP et REGEDIT4 en codage ANSI. Un fichier texte codé en Unicode sous XP n'est pas réutilisable sous Windows98, il faut le réenregistrer en mode Ansi. Une exportation du registre en Unicode.

Relu en mode Ansi sous Windows98 qui n'utilise pas Unicode.

Une doc du CNRS sur l'Unicode.

Hubert GREGOIRE

Dernière mise à jour le 15/12/03


« Retour en page d'accueil des Services »
«
Retour en page d'accueil de CIEL »