PRATIQUE ALGO/METHODES 
Expliquez-moi... le standard Unicode
 
Unicode est un codage, au même titre que le Morse ou l'ancêtre ASCII : il vise à faciliter l'échange de données entre différents pays. (04/10/2005)
  Forum

Réagissez dans les forums de JDN Développeurs

Unicode décrit un standard d'encodage pour l'ensemble des caractères écrits connus et utilisés de nos jours. Cela peut aller des lettres ou symboles communs à tous les langages d'un groupe, ou propres à chaque langage individuel, mais également les symboles de la vie courante, les signes mathématiques ou linguistiques...

En bref, le standard Unicode est une table contenant tous les caractères existants.

Unicode est bien un codage, au même titre que le Morse ou l'ancêtre ASCII : il applique un code (c'est-à-dire un ensemble de symboles - ici sous la forme U+XXXX, par exemple U+002A pour '*') à un ensemble de données (ici, des caractères).

Unifier l'ensemble des codages a doit permettre à différents pays (chacun utilisant son propre codage ou sa propre version d'un codage, selon les caractères nécessaires) d'échanger de données.

Le standard créé par le consortium Unicode, correspondant également à ISO 10646 (car successeur du standard ISO 646, le code ASCII) fait donc de son mieux pour rester compatible avec les standards précédents (notamment ISO 646 et ISO 2022), et prévoir l'ajout de nouveaux caractères.

Les 256 premiers caractères correspondent ainsi à peu de choses près à la table définie par ASCII, tandis que le codage utilise un système de zones (en l'occurrence, une succession de rangées, plans et groupes), le tout culminant à plus d'un million de caractères potentiels.

Unicode existe sous plusieurs formes, afin de s'adapter aux usages. La plus utilisée à l'heure actuelle est UTF-8, qui est un codage de caractère de longueur variable. Le caractère est représenté par groupe d'octets (8 bits), jusqu'à quatre octets selon le caractère Unicode voulu.

Cette adaptabilité lui permet d'être utilisé tel quel pour les systèmes habitués à l'ASCII, tandis que ceux qui ont besoin d'un codage plus complexe peuvent appeler le caractère Unicode à l'envi.

Unicode permet donc d'utiliser tous les caractères existants actuellement, pour peu que :
  - la plate-forme, l'outil et le langage de programmation reconnaissent Unicode.
  - on sache précisément quels caractères on souhaite utiliser

La plupart des plates-formes modernes reconnaissent le codage sans problème. La plupart des langages également (bien que, par exemple, PHP souffre encore de faiblesses à ce niveau).

La tâche est déjà plus ardue pour les outils, qui ne prennent pas toujours en compte Unicode, ou pas pleinement, que ce soit par manque de temps, de motivation ou de demande.

Chaque plate-forme, langage et outil prenant en compte Unicode le fait à sa propre manière, le plus souvent transparente pour l'utilisateur. Cela oblige en contrepartie celui qui souhaite combiner les jeux de caractères à un petit effort.

Pour signaler qu'une chaîne utilise Unicode en Python, par exemple, il faut la précéder du caractère u, les caractères Unicode devant être déjà codés :

chaine = u'JDN D\xe9veloppeurs'

(00E9 donne 233 en hexadécimal, qui correspond à l'emplacement du caractère "è" dans la table Unicode)

Idem pour le HTML, qui propose de passer par les mêmes codes :

JDN Développeurs

Pour l'intrépide, il faut donc passer par la table des caractères Unicode, et les codes les désignants...

L'application la plus courante se retrouve sur le Web. Une page peut utiliser une balise méta de cette forme :

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

Celle-ci définit l'encodage utilisé par le fichier. Le navigateur devra le reconnaître et afficher le texte correctement. Pour peu que l'utilisateur sélectionne UTF-8 comme affichage de son navigateur, les caractères spéciaux ne seront pas les bons.

Les divers maillons de la chaîne doivent donc agir de concert. L'outil créateur de la page HTML doit la sauvegarder avec le bon codage, le serveur doit la servir sans indiquer un autre codage (un problème courant), et le navigateur doit reconnaître et exploiter correctement le jeu de caractères.
 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page