Unicode

Code ASCII

Tout le monde a entendu parler de ce code qui fait le lien entre l'alphabet et l'ordinateur en attribuant un nombre à chaque caractère (1960). Ainsi A = 65, a = 97, 0 = 48, # = 35.
Hélas, pour des raisons historiques, le standard n'a été défini que sur 128 nombres et compte tenu que les 32 premiers (et le dernier) sont des caractères de contrôle (non imprimables) comme les retour chariot ou tabulation, il n'en reste pas assez (95) pour le moindre caractère non-américain comme é, ç, à, Ø, Æ. Il y a bien la possibilité de 128 caractères supplémentaires en utilisant tous les bits d'un octet mais ce code Ascii étendu (par exemple ISO-8859-1) dépend de la plate-forme (il ne s'agit pas seulement de Windows ou Mac OS, mais de Windows Grèce ou Windows Egypte), d'où de nombreux problèmes à partir du moment où on a pu faire communiquer les ordinateurs entre eux. L'apparition et la généralisation d'Internet ont rendu la situation insupportable.

Unicode

L'Unicode a été conçu (1990) pour résoudre ce problème. En codant les caractères sur 16 bits au lieu de 8, on a 65536 possibilités (au lieu de 256). Ce qui ne permet pas de coder la totalité de l'existant (12000 syllabes en coréen, 50000 lettres en chinois) aussi a-t-on prévu un code sur 32 bits.
Sachant que la totalité de l'anglais ne nécessite que 8 bits, il eût été ridicule de coder tous les textes anglais en 32 bits ce qui aurait multiplié par quatre l'encombrement mémoire et disque de tout ce qui existe informatiquement parlant. Gaspillage d'autant plus notable que l'Unicode au total n'utilise que 21 bits !

D'où un mode de codage plus souple constitué d'UTF-8, UTF-16 et UTF-32.
UTF-8 comme son sigle le laisse supposer est à 8 bits, pour pouvoir coder tout l'unicode, il utilise plusieurs octets : 1, 2, 3 ou 4 selon le besoin.
L'UTF-16 pour sa part utilise des mots de 16 bits (1 ou 2).
Statistiquement, pour l'anglais il ne faut qu'un octet. Pour les langues européennes, en moyenne : 1,1, pour le cyrillique, l'arabe ou le grec : 1,7.
L'UTF-8 étant nécessairement multi-forme, le nombre d'octets à suivre est déterminé par le premier.

Donner toutes les catégories de l'Unicode serait rébarbatif, on pourra pour cela consulter le site officiel.
Quelques exemples seulement mais qui montrent que ça va loin :
U+0600 - U+06FF (Arabic): ۱ ۲ ۳ ۴
U+2200 - U+22FF (Maths) : ∑ ∀
U+2600 - U+26FF (Misc. symbols) : ☀ ♋
U+2700 - U+27BF (Dingbats) : ✠ ✉

Liens

Qu'est-ce que l'Unicode ? (ma traduction en français)
HTML multilingue

Copyright © 2005 Richard Chéron