Dominique Meeùs
Dernière modification le
retour à la table des matières
— à l’index
— à ma page de départ
Il existe différentes listes de caractères plus ou moins complètes. Un caractère est
identifié par le nombre qui marque sa position dans la liste (code point). La liste
la plus complète est Unicode. On y trouve non seulement tous les caractères accentués
du français, mais aussi toutes les écritures autres que nos caractères romains, ou
latins, et toute sorte de caractères spéciaux. Cette liste est numérotée et on peut
se référer à un caractère par son code Unicode, hexadécimal plutôt que décimal. On
peut appeler ça le code Unicode du caractère. Par exemple, le É de Éva ou de États-Unis
a le numéro 201
(décimal) ou C9
(hexadécimal) et cela est généralement noté U+00C9
.
Le code Unicode est à usage humain (comme le code postal). Il nous permet de dire
de quel caractère il s’agit, soit entre nous, soit à un langage de programmation écrit
par nous et que nous devons pouvoir relire, comme par exemple le langage HTML qui
se cache derrière une page web ou les e-mails mis en forme. On peut obtenir un É dans
une page HTML en écrivant É
ou É
où l’on reconnait les numéros cités plus haut. On peut aussi écrire É
. On peut même, mieux, écrire tout simplement « É », mais c’est là que les difficultés
commencent.
En effet, les ordinateurs ne lisent ni É, ni 201
, ni C9
, mais seulement des suites de 0 ou 1 groupés en octets. Donc derrière un « code »
encore humain comme le code Unicode U+00C9
, il y a un code digital à l’usage de l’ordinateur. En d’autres termes, notre « code »
U+00C9
doit lui-même encore être codé pour l’ordinateur. Si un caractère est loin dans la
liste, un octet ne suffira pas à écrire son code Unicode sous forme digitale, il faudra
plusieurs octets et il y a plusieurs manières de le faire, qui s’appellent UTF-8,
UTF-16 ou UTF-32 (et encore, avec des variantes !) Il y a aussi d’anciennes listes,
plus courtes, moins complètes que Unicode, et d’autres codifications digitales, comme
ASCII, ANSI, et différentes variantes ISO comme ISO-8859-1 (voir mon historique) que des systèmes obsolètes utilisent encore, comme le système d’exploitation Windows
de Microsoft (sauf peut-être les versions les plus récentes).
Il faut retenir en bref, qu’il y a deux niveaux d’encodage :
(i) désigner le caractère dans une liste comme Unicode par sa position dans la liste ;
(ii) enregistrer cette désignation sous forme digitale.
Cette distinction n’est pas toujours comprise parce que des systèmes primitifs de
codage de caractères comme ISO-8859-1 n’ont qu’un seul encodage digital et qu’on utilise
donc la même appellation ISO-8859-1 pour désigner les deux niveaux, humain (i) et
digital (ii).
Quant à cet aspect digital, (ii), il y a des situations, comme dans une page HTML ou un document XML où on doit déclarer comment on l’a fait. J’en arrive au point crucial, le plus important en pratique, qu’on perd souvent de vue, d’où viennent beaucoup de pages HTML ou d’e-mails avec des caractères bizarres : il faut le déclarer et le faire effectivement. Autrement dit, il faut non seulement le déclarer, mais il faut s’assurer que le programme utilisé enregistre bien dans l’encodage qu’on déclare. Déclarer un certain encodage digital alors qu’on enregistre en fait dans un autre, c’est pire que tout. C’est plus simple en XML : UTF-8 est l’encodage par défaut ; on recommande de n’utiliser que UTF-8 ; on ne doit alors pas le déclarer. (Mais ça ne dispense pas de s’assurer que c’est bien ce que l’éditeur encode !)
Si on tombe sur un texte avec des caractères bizarres par erreur d’encodage, il est possible de rechercher des suites de deux ou trois tels caractères et de les remplacer selon la table que fournit, avec des explications, www.i18nqa.com/debug/utf8-debug.html.
Table of contents