Alsacreations FAQ version Beta 0.5

Encodage et internationalisation

S'y retrouver entre ASCII, ANSI, Latin1, ISO-8859-1, MacRoman, Windows-1252, etc.

Vous avez sûrement déjà croisé certaines des appelations suivantes: ASCII, ANSI, Latin1, ISO-8859-1, MacRoman, Windows-1252, etc. Elles désignent toutes des encodages de caractères. Et comme la plupart de ces encodages sont assez proches entre eux (on pourrait dire qu'ils font partie de la même famille, même si ça n'est pas tout à fait le cas), les confusions sont fréquentes, et on utilise parfois un nom pour un autre.

Tentons de mettre les choses au point.

RAPIDE INTRODUCTION SUR LES ENCODAGES DE CARACTÈRES

En informatique, un encodage de caractères est une norme qui dit, grosso modo, à quels caractères correspondent un ensemble de valeurs numériques. Les fichiers informatiques, même lorsqu'ils sont au format texte brut, ne sont pas des suites de lettres et autres caractères, mais des suites de nombres. Pour chaque nombre, il s'agit de savoir à quel lettre ou caractère il correspond. C'est le rôle de l'encodage de définir cette correspondance.
(On pourrait être beaucoup plus exact et précis sur ce qu'est un encodage de caractères, mais au prix de développements fastidieux… on en restera donc là.)

Lorsqu'on réalise un site web, il est important de savoir dans quel encodage est enregistré un document (une page HTML par exemple), afin de pouvoir déclarer cet encodage si besoin, et de pouvoir conserver le bon encodage lorsqu'on modifie le fichier.

Le problème avec les encodages cités ci-dessus, c'est qu'on ne sait pas toujours à quoi ils correspondent, et qu'on utilise parfois un nom à la place d'un autre! Mettons un peu les choses au point.

LES ENCODAGES ASCII ET FILS

- ASCII (http://fr.wikipedia.org/wiki/US-ASCII)
ASCII est en encodage qui contient 128 caractères, soit pas des masses. En gros, ça sert à écrire l'anglo-américain, mais ça ne permet pas d'écrire les langues européennes qui ont des «caractères spéciaux», notamment des lettres avec diacritiques (accents, cédille, autres joyeusetés). Bref, on ne peut pas écrire en français avec de l'ASCII, et à vrai dire on a rarement besoin d'utiliser cet encodage.
Les 128 caractères ASCII restent cependant la base d'une partie des encodages modernes, créés comme des extensions d'ASCII et compatibles avec celui-ci.

- ISO-8859-1 ou Latin-1 (http://fr.wikipedia.org/wiki/ISO_8859-1)
Le nom officiel est ISO-8859-1 (c'est d'ailleurs celui qu'on utilise pour déclarer l'encodage d'une page web), mais l'appelation «Latin-1» ou «latin1» est fréquente. Il s'agit d'une extension d'ASCII qui comporte 191 caractères imprimables. Elle permet d'écrire la plupart des langues d'Europe de l'Ouest. Presque tous les caractères du français y sont (manque le «e dans l'o»).

- ISO-8859-15 ou Latin-9 (http://fr.wikipedia.org/wiki/ISO_8859-15)
Cette norme modifie légèrement ISO-8859-1. Pour le français, on notera l'ajout du «e dans l'o» (les caractères ½ et ¼). On notera aussi l'ajout du symbole monétaire Euro (¤).

- ANSI ou Windows-1252 (http://fr.wikipedia.org/wiki/Windows-1252)
ANSI est une extension d'ISO-8859-1, qui rajoute un certain nombre de caractères: «e dans l'o», symbole de l'Euro, mais aussi guillemets anglais, points de suspension, signe «pour mille», tirets cadratin et demi-cadratin, etc. En tout, cela représente 218 caractères imprimables.
Dans les années 90, Microsoft adopte ANSI pour son système d'exploitation Windows. Aujourd'hui, quand on parle d'ANSI, on parle en fait de Windows-1252 (aussi nommé CP1252)

- MacRoman (http://fr.wikipedia.org/wiki/MacRoman)
Une autre extension d'ASCII, qui couvre la plupart des caractères existant dans ISO-8859-1 mais sans être compatible. Si vous travaillez sous Mac OS ou recevez des fichiers de quelqu'un travaillant sous Mac OS, il se peut que le texte soit en MacRoman.
Voilà, nous arrivons à la fin de notre passage en revue d'ASCII et de ses rejetons. Les choses devraient maintenant être plus claires… du moins, si nos outils (navigateurs, éditeurs de code…) ne viennent pas entretenir la confusion en mélangeant les termes. ;)

AU FAIT, QUEL ENCODAGE CHOISIR?

Il est déconseillé d'utiliser ANSI/Windows-1252 pour le Web. On lui préfèrera ISO-8859-1, ou ISO-8859-15. Pour les caractères n'existant pas dans ces deux encodages, on pourra utiliser des entités HTML, par exemple — pour un tiret cadratin.

Une autre solution serait d'utiliser UTF-8, un encodage qui permet d'écrire un nombre très important de caractères, et la plupart des langues du monde. Sur les avantages comparés d'ISO-8859-1/15 et d'UTF-8, on pourra lire:
http://forum.alsacreations.com/faq/faq-36-Charset-Iso-8859-1-iso-8859-15-utf-8-lequel-choisir-.html

Liens complémentaires