|
|
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.
|
|
|