Bien que pour HTTP, protocole apte à transmettre des flux d'octets sans considérer que ce sont forcément des caractères, bon nombre de problèmes sont à résoudre.
Le langage HTML (Hyper Text Markup Language), lui aussi, propose des méthodes particulières pour traiter les caractères non US-ASCII. Il règne d'ailleurs dans ce domaine la plus grande confusion.
Avec la version 3.2 du HTML, il n'y avait normalement pas d'autre possibilité que de passer par un transcodage du type « signes nommés ». Depuis le version 4.0 de HTML, il est théoriquement possible de définir dans l'en-tête du document quel jeu de caractères est utilisé.
Comme HTML est probablement le lieu où les normes sont le moins respectées, il convient tout de même de rester prudent. Car, croyez-vous que le fait de pouvoir utiliser UTF-8, ISO-8859-1, ISO-8859-15 ou autre, simplement en annonçant la chose dans l'en-tête HTML ?
Voyons ceci…
Dans la page que nous avons sous les yeux, il est écrit :
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
...
</head>
En voyant ceci, notre « browser » va comprendre qu'il faut utiliser UTF-8 et, normalement, il n'y a pas de problème, à la condition bien entendu que le texte qui a été introduit dans ce wiki soit bien encodé en UTF-8.
Mais en cas de désaccord entre la saisie et l'affichage, la phrase :
Nous avons été abusés par le système
Pourrait devenir ceci :
Nous avons été abusés par le système
Nettement moins lisible n'est-ce pas ? Dans cet exemple, le texte a été encodé en UTF-8 et décodé en ISO-8859-1. Il s'agit bien sûr d'une manipulation pour faire apparaitre ceci. Mais forcez donc votre navigateur à afficher cette page en ISO-8859-1…
Normalement, avec des choses comme les WIKI, le problème ne se rencontre pas, sauf dans certains cas tordus…
Si nous utilisons les « signes nommés », nous pouvons garantir plus d'interopérabilité, au prix d'un code source HTML nettement moins lisible.
Le principe est simple :
Un simple exemple, juste pour illustrer. Le é devrait se coder dans le source HTML : &;eacute;
Vous trouverez beaucoup plus de détails sur les signes nommés ainsi que sur beaucoup d'autres points du HTML sur la très instructive page SELFHTML.
Il existe une table de signes nommés définie dans HTML 3.2 . HTML 4.0 définit des ajouts à cette table, bien que, théoriquement, une balise d'en-tête du type :
<meta http-equiv= "Content-Type" content= "text/html; charset=iso-8859-1">
devrait à elle seule permettre l'emploi de tous les symboles définis par iso-8859-1 (version 4.0 et suivantes).
Si vous n'avez pas encore attrapé le vertige, vous ne l'attraperez plus. Sinon, essayons de consolider un peu nos positions.
Le « bricolage » le plus propre consiste à utiliser un jeu de caractères minimal et de coder les caractères supplémentaires par une combinaison identifiable des caractères de base. C'est cette solution qui est le plus souvent mise en œuvre, et elle donne finalement les meilleurs résultats.