Dominique Meeùs
Dernière modification le   
retour à la table des matières — à l’index — à ma page de départ

Encodages de caractères

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

Table of contents

Dominique Meeùs . Date: 2011… 2017