Ouéééé encore un billet de geek ! (Ça veut dire que si vous êtes non-geek, vous ne comprendrez qu'un mot sur deux, et encore, les autres paraîtront des gros mots)
Vous pestez, vous avez votre document HTML en UTF-8, vous avez bien mis la ligne suivante :
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
Et pourtant, non, ça veut pas, vous avez toujours è
à la place de è
, ou é
à la place de é
ou encore î
à la place de î
. Ça vous emmerde, vous n'avez certainement pas envie de remettre (respectivement) des è
, é
, ou î
, et laisser ces entités là où elles étaient, à savoir au placard.
Si vous regardez les headers HTTP de réponse (grâce à l'excellente Web Developer Extension), vous voyez ça :
Content-Type: text/html; charset=ISO-8859-1
Or, il est vrai, cela force l'interprétation du charset; cette information a priorité sur celle définie dans la page (et j'avoue que je ne comprends pas vraiment pourquoi, la logique aurait plutôt voulu l'inverse, selon moi).
Il se trouve qu'Apache, par défaut[1], et pour des raisons obscures qui n'ont rien à voir, configure la propriété suivante :
AddDefaultCharset On
Il suffit de la changer en Off
, ou bien d'ajouter AddDefaultCharset Off
dans votre .htaccess
.
Attention, si un Apache joue le rôle de Reverse-Proxy chez vous (c'est le cas chez moi), il faudra aussi changer ça chez lui.
Notes
[1] Ou alors, c'est Debian