Résumé
Unicode. Un document XML, c'est d'abord du texte (balisé). L'objet ne semble pas poser de problèmes informatiques insurmontables, pourtant, il y a loin entre une suite de bits, d'octets, de nombres en toutes bases, et nos lettres, et les autres alphabets, et les caractères chinois ou égyptiens.
L'usage habituel de son ordinateur personnel ne confronte que rarement au problème du codage des caractères. On demande à ce qu'un fichier s'enregistre tel qu'on le lit, et de ne rien perdre en route. On peut cependant remarquer des différences d'un logiciel à l'autre, tel le graphisme qui n'est pas reconnu partout, des espacements qui changent... Les problèmes commencent franchement lorsque l'on échange des fichiers entre deux systèmes différents (MAC-MS.Windows), et deviennent un vrai casse-tête lorsque cohabitent de nombreuse langues. Internet a définitivement imposé le besoin d'une norme internationale ou le ç français a le même code partout.
Unicode est un standard définissant un jeu de caractères. Sans entrer dans les détails, mentionnons que l'Unicode de base permet le codage des caractères sur 2 octets, soit plus de 65 000 caractères différents.
En plus des techniques de codage, Unicode définit un jeu de caractères qui en compte plus de 40 000 aujourd'hui. Tous les caractères des langues vivantes s'y retrouvent, de même que certaines langues mortes et des symboles.
Unicode ne règle pas tous les problèmes de multilinguisme, mais il constitue la meilleure solution que l'on connaisse actuellement.
Par défaut, les documents XML sont des documents texte dont le jeu de caractères est l'Unicode. En quelque sorte, il y a un seul jeu de caractères standard pour l'XML, et ce jeu de caractères est le plus important que l'on connaisse. D'autres jeux de caractères (comme l'ISO Latin 1) peuvent être utilisés, mais une application XML n'est pas obligée de les supporter, et donc de les traiter correctement.
Cette intime association entre Unicode et XML fait en sorte que les systèmes d'information basés sur XML peuvent gérer (en théorie) des documents ou des informations de toutes les langues, y compris dans les mêmes documents.
Unicode est unique, mais il peut être enregistré de plusieurs manières. On comprendra que les milliers de caractères chinois prendront chacun plus de place que les lettres latines, d'où des optimisations possibles.
L'encodage nommé UTF-8 consiste à encoder les caractères ASCII sur un octet, puis les autres caractères sur 2, 3, 4, 5 ou 6 octets, sans ambiguïté. Il s'agit d'un encodage intéressant pour le français, car la plupart des caractères pourront s'écrire sur un seul octet (les lettres non accentuées), alors que les autres sont définis de telle sorte qu'en UTF-8 ils sont codés sur deux octets seulement.
L'encodage nommé UTF-16 consiste à représenter tous les caractères sur deux octets. Cet encodage est plus efficace pour des documents en langues asiatiques par exemple, mais inefficace pour des documents en langues européennes.
Dans un fichier XML, les caractères peuvent être directement encodés en Unicode, et normalement les outils le font automatiquement. Toutefois, il est possible d'inscrire tout caractère Unicode à l'aide des entités caractères, qui prennent la forme suivante : 㓶
Dans ce cas, il s'agit du caractère qui occupe la position 34F6 en base hexadécimale (13 558 en base décimale) dans le jeu de caractères Unicode. Il s'agit de ce caractère : ?. Par ailleurs, on peut aussi utiliser cette technique : 㓶.
Il s'agit exactement du même caractère, mais cette fois indiqué en base décimale. C'est le 'x' qui suit le '#' qui indique la base hexadécimale.
Le standard Unicode est intéressant, mais le problème réside dans le support Unicode que l'on trouve dans les systèmes d'exploitation, les logiciels, les polices.
Au niveau des systèmes d'exploitation, les versions récentes de Windows supportent Unicode, de même que plusieurs logiciels récents, dont la suite Office. Sur MacOS, Unicode est supporté depuis la version 8.5, mais peu d'applications l'utilisent.
Concernant les polices, il n'existe pas de police universelle contenant tous les caractères définis dans Unicode 3 et disponible publiquement. La police la plus intéressante est probablement Arial Unicode MS, qui contient tous les caractères d'Unicode 2.1 et que l'on peut télécharger sur le site de Microsoft.