Technologies internet
Unicode
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:
- les jeux de caractères classiques ne pouvaient au mieux prendre en charge
que quelques langues
- la prise en charge de plusieurs langues à la fois était difficile, voire
impossible
- aucun jeu de caractères ne fournissait toutes les lettres, les signes
de ponctuation et les symboles techniques en usage courant utilisés pour
une seule langue comme le français.
La version 5.0.0 d’Unicode, mise à jour en juillet 2006, contient :
- 99 024 lettres ou syllabes, chiffres ou nombres, symboles divers, signes diacritiques et signes de ponctuation
- plusieurs centaines de caractères de contrôle
- caractères à usage privé,
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 versions récentes de Windows et la suite Office.
- MacOS, la version 8.5+, OS-X
- UNIX/Linux
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."