Technologies internet


Unicode


Voir:

Un codage de caractères est la représentation numérique d'un caractère donné. Le codage US-ASCII du caractère A, par exemple, est 65. Lorsqu'un ordinateur lit et écrit des fichiers avec le codage US-ASCII, chaque caractère est stocké dans un octet.

Le codage de caractères le plus complet s'appelle ISO/IEC 10646 et alloue 32 bits pour chaque caractère. Ceci permet de représenter chaque caractère de chaque langage mais consomme beaucoup de mémoire.

Unicode est une extension de ISO/IEC 10646.

Unicode spécifie un nom et un numéro unique pour chaque caractère, quelle que soit la plate-forme, quel que soit le logiciel et quelle que soit la langue.

Les jeux de caractères utilisés avant l'avènement d'Unicode possédaient des architectures très différentes les uns des autres:

La version 5.0.0 d’Unicode, mise à jour en juillet 2006, contient :

soit un total de près de 250 000 codes assignés dans un espace pouvant contenir 1 114 112 codes différents (21 bits).

Unicode et XML

SGML utiisait ASCII (alphabet latin sans accents) par défaut. XML a adopté l'Unicode par défaut. 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.

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.

La question de l'encodage

Contrairement aux normes précédentes, Unicode sépare la définition du jeu de caractères (la liste des caractères, leur nom et leur index, le point de code) de celle du codage.

Il existe plusieurs façons d'encoder des caractères Unicode dans des fichiers informatiques, on parlera de différents encodages.

L'encodage nommé UTF-8 consiste à encoder les caractères ASCII sur un octet, puis les autres caractères sur 2, 3, ou 4 octets, sans ambiguïté. Il s'agit d'un encodage intéressant pour le français, car la plupart des caractèrés 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. C’est aussi le codage qu’utilise la plate-forme Java en interne.

Les entités caractères en XML

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 4E35 en base hexadécimale (20 021 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.

Il est aussi possible d'utiliser les cinq entités caractères prédéfinies : quot ("), amp (&), apos ('), lt (<) et gt (>). Note : la DTD de HTML déclare 252 entités caractères.

Support

Unicode est supporté par Les deux encodages Unicode (UTF-8 et UTF-16) sont ainsi les seuls encodages que la recommandation XML 1.0 impose à tous les parseurs XML:

"Tous les processeurs XML doivent être à même de lire les entités en UTF-8 ou UTF-16."