Est-ce que je peux avoir le caractère € directement à partir du clavier ? Pour tout dire, faut-il déclarer un META charset et lequel ? (et d'abord, qu'est-ce-que c'est ?)

  1. Sur la touche €
  2. Charset 8859-1 ou 15 ?
  3. Qu'est-ce qu'un charset ?
  4. A quoi sert la ligne «META charset» ?
  5. Faut-il vraiment en mettre une ?
  6. Faut-il se déclarer en ISO-8859-15 ?

1 — Concernant le signe €, ne vous fiez pas trop à la touche correspondante du clavier, utilisez plutôt l'entité €.

Bien entendu, si vous faites vos pages avec un éditeur HTML assez évolué, celui-ci peut intercepter la frappe de la touche € et la traduire systématiquement par l'entité «€» (ou l'expression unicode €). La visualisation sera correcte et vous aurez ainsi l'impression que la frappe directe est possible. Vérifiez dans votre code s'il en est bien ainsi. Si ce n'est pas le cas, c.à.d. si le signe € reste en place dans votre code, il se peut encore que la visualisation dans un navigateur ait l'air correcte. N'en concluez pas pour autant que cela fonctionne, car il y a de bonnes chances pour que certains visiteurs vous demandent ensuite ce que vous avez voulu écrire.

2 — Charset 8859-1 ou 8859-15 ?

La confusion est entretenue par la double affirmation courante,
(i) que le signe € figure dans le «charset 8859-15»,
(ii) et qu'il convient donc de mettre la ligne
<META http-equiv="Content-Type" Content="text/html; charset=ISO-8859-15">
au début de votre bloc <HEAD> pour être tranquille.

Le point (i) est bien exact et on verra plus tard ce qu'il signifie. Par contre, il est facile de voir que le point (ii) est erroné. Nous avons préparé l'expérience pour vous : sous Windows, avec un éditeur basique comme Notepad ou Wordpad, on met la ligne magique en bonne place et on tape quelques «€» dans le BODY, et aussi, pour faire bonne mesure, quelques «œ». On recommence ensuite en déclarant un charset ISO-8859-1, et on regarde les résultats dans les deux cas. Très généralement :
— sous le charset 8859-15, ces € ne sont pas reconnus
— par contre ils reviennent sous le charset 8859-1. Miracle ! et ô confusion ! pourquoi donc, puisque le signe € ne figure pas dans ce charset ? Toujours à ce qu'on dit, bien entendu...
Pour dégager ces tendances «générales», nous n'avons évidemment pas testé tous les navigateurs du moment, mais nous avons réuni un échantillon qui nous paraît assez significatif en cette mi-2003 :
— sous Windows : IE5.5, IE6, Mozilla (1.3), NN7, Opera7
— sous Mac-OS9 : IE5.0, Mozilla (1.1), NN6, Opera6, iCab (2.9)
— sous Mac-OSX : IE5.2, Chimera (0.6), Safari (1.0)
— sous Linux : Konqueror (3.1.0), Mozilla (1.3.1), Opera (7.11), Lynx (2.8.5)
Nous avons délibéremment écarté les NN4 — il en reste encore un peu, mais c'est un navigateur qu'il faudrait éradiquer !

3 — Mais que sont donc ces «charsets» ?

Les charsets — jeux de caractères — sont associés à la notion de claviers nationaux. La première fois que vous démarrez une machine, le système d'exploitation demande dans quelle langue vous voulez travailler, et selon la réponse, vous aurez un clavier QWERTY ou AZERTY, mais aussi, plus subtilement, l'octet inscrit dans le fichier en réponse à telle ou telle lettre du clavier ne sera pas toujours le même. C'est cette correspondance lettre-octet inscrit qu'on décrit à travers les charsets.

Il y en a une grande variété parce que la correspondance lettre-octet unique ne permet que 256 caractères différents par charset et que cela ne suffit pas pour toutes les langues de la planète — même pas pour les seules langues latines du monde occidental. Aujourd'hui, on essaie de promouvoir des correspondances plus évoluées où chaque lettre correspond à deux octets ou plus (polices unicode), mais la première réponse historique a été de faire des groupes de langues et de prévoir un charset pour chacun d'entre eux. Nous continuons toujours sur cette lancée, à travailler pour nos travaux courants avec des charsets adaptés à notre langue nationale.

Les différents charsets en vigueur ont été définis d'une part par des organismes de normalisation internationaux (tous les ISO-xxx), et, d'autre part, par les grands constructeurs. On trouvera les plus importants d'entre eux dans le site de Roman Czyborra, avec notamment la quinzaine des différents charsets ISO-8859.

Pour en revenir à notre expérience paradoxale, on constate effectivement que les caractères € ou œ figurent bien dans le jeu ISO-8859-15, mais pas dans le ISO-8859-1.

4 — A quoi sert la ligne «META charset» ?

Cette ligne indique au navigateur dans quel jeu de caractères vous travaillez, afin qu'il puisse faire une restitution correcte de votre page.

En réalité, ce n'est pas parce que vous annoncez un charset=ISO-8859-1 ou ISO-8859-15 que vous utilisez réellement ce charset. Seul votre éditeur sait vraiment ce qu'il en est. S'il n'intercepte pas vos frappes pour les rendre conformes au charset annoncé, il y a toutes les chances pour que vous utilisiez le charset=Windows-1252 sous Windows, ou le charset=Macintosh sous MacOS.

Vous pouvez parfaitement utiliser ces charsets «propriétaires» (spécifiques d'un constructeur particulier). Du moins, vous pourrez faire valider la bonne syntaxe de vos pages par le validateur du consortium W3C, alors que celui-ci rejettera votre page s'il n'y a pas de charset déclaré ou bien si vous faites une déclaration fantaisiste. En revanche, vous courrez le risque que vos pages ne soient pas correctement restituées si ce charset n'est pas reconnu par le navigateur de votre visiteur (le menu Affichage > Jeu de caractères permet de voir ce que celui-ci sait faire).

A titre d'illustration, voyez comment apparaissent chez vous quelques lettres spéciales inscrites dans les charsets Windows et Mac. D'après notre expérience

5 — Faut-il vraiment mettre une ligne «META charset» ?

Cette ligne est indispensable si vous voulez passer votre page au validateur W3C pour vérifier la syntaxe de votre HTML. S'il ne la trouve pas, le validateur vous dira qu'il ne peut pas comprendre votre fichier.

En l'absence de cette ligne, le navigateur de votre visiteur se débrouillera de son mieux pour comprendre. En général, dans notre monde occidental, il en restera au mélange que nous avons décrit du ISO-8859-1 et des caractères «interdits» utilisés par Windows. Et si ça ne se passe pas bien, le visiteur pourra essayer d'autres encodages par le menu Affichage > Jeu de caractères (ce menu est inopérant s'il y a un charset déclaré).

6 — Faut-il se déclarer en charset ISO-8859-15 ?

Ce charset est une petite modification du charset ISO-8859-1. Quelques caractères peu usités ont été remplacés par d'autres plus utiles aux Européens. Notamment, un octet est prévu pour l'euro € (xA4, ou 164), et un autre pour la ligature œ réclamée par les francophones (xBD, ou 189).

Mais il ne faut déclarer ce charset que si votre éditeur est capable de s'y conformer, et, dans ce cas-là, ça fonctionnera. Généralement, le choix du charset se fait dans les préférences du programme et celui-ci place de lui-même la ligne «meta charset» appropriée quand vous ouvrez une nouvelle page. Si cette ligne n'apparaît pas, ou si vous ne trouvez pas le charset 8859-15 dans les diverses options offertes, c'est que vous allez très probablement travailler dans le charset spécifique à votre machine. Il est alors dangereux de prétendre au charset ISO-8859-15. Sous Windows, vous risquez fort de traduire chaque signe € par l'octet 128 (80 en hexa), qui ne figure pas dans ce charset et ne sera donc pas reconnu par les navigateurs les plus courants.

Vous échapperez à ce risque si votre éditeur intercepte correctement les caractères spéciaux. Par exemple, Dreamweaver 4 se déclare par défaut en ISO-8859-1 et il remplace la plupart de ces caractères par les entités HTML correspondantes (cf les lettres accentuées ou le signe €). Il n'y aurait donc aucun problème avec l'euro si vous déclariez ISO-8859-15 comme charset.

Toutefois, quelques signes (comme œ ou le tiret long —) sont remplacés par des combinaisons &#nn;nn correspond à l'octet Windows, c.à.d. des combinaisons qui n'ont pas de signification dans la norme officielle qui attend un numéro unicode pour nn. En général, ces combinaisons sont néammoins interprétées comme attendu (seul Opera6-mac les refuse en bloc, mais c'est un navigateur peu fiable — Opera7 les accepte ; Konqueror se contente de rendre le tiret long en tiret court).

Le cas de DW-MX est plus curieux. Comme DW2 ou DW4, il ne peut se mettre qu'en charset ISO-8859-1 ou Windows-1252. Si on travaille depuis la fenêtre de visualisation, il intercepte correctement les caractères spéciaux et tout se passe bien ensuite. Par contre, si on opère depuis l'onglet de code HTML, les € et des œ s'enregistrent respectivement en octets A4 et 9C dans le fichier, ce qui n'a de sens ni en Windows-1252, ni en ISO-8859-15, et ça ne marchera donc nulle part correctement pour les deux caractères à la fois...

Charles