LaurentDenis
lundi 16 août 2004 à 06:10
CITATION(Dagnan @ lundi 16 août 2004, 01:44)
Cela ne suffit pas ?
CODE
<?xml version="1.0" encoding="iso-8859-1"?>
Il me semble avoir lu sur OpenWeb qu'il fallait le preciser via un meta-tag, mais comme je n'en suis pas sûr, j'aimerais avoir la confirmation

En pratique, non, ça ne suffit pas. Petit résumé rapide :
Un navigateur tente de déterminer l'encodage d'un document successivement :
- d'abord à partir de l'en-tête HTTP Content-Type envoyé par le serveur,
- à défaut, avec le prologue xml ci-dessus pour les documents XHTML,
- à défaut, avec la meta http-equiv="Content-Type" content="...; charset=..."
- à défaut, en tentant de deviner d'après le contenu ou selon les réglages faits par l'utilisateur qui permettent de spécifier un encodage à utiliser en cas de doute (ça, c'est la porte ouverte à toutes les erreurs possibles et imaginables).
Cependant :
- l'en-tête HTTP ne suffit pas, car les utilisateurs n'accèderont pas forcément au document via HTTP : il suffit qu'ils l'aient enregistré localement pour qu'ils perdent l'information d'encodage.
- et le prologue XML n'est pas toujours souhaitable : il n'est n'est
obligatoire en XHTML1.0 Strict que lorsque XHTML1.0 est traité en tant qu'XML, que rien n'est spécifié au niveau serveur, et que l'encodage n'est pas en utf-8 ou en utf16. On peut donc préférer l'éviter dans la mesure où il modifie le mode de rendu CSS d'Opera et d'Internet Explorer 6.0 Win qui adoptent alors
le modèle de boîte Microsoft et non le modèle Standard, alors que d'autres navigateurs resteront en mode de rendu Standard.
La "bonne pratique" est donc:
-
de fixer l'encodage avec l'en-tête HTTP si on a accès à ce paramètre serveur, par exemple avec
header("Content-type: text/html; charset=ISO-8859-1"); en PHP, ou
<%response.ContentType=("text/html; charset=iso-8859-1")%> en ASP. D'autres méthodes sont détaillées dans
The HTTP charset parameter.
-
de le repréciser systématiquement dans le document lui-même, avec le prologue XML éventuellement (en XHTML, pas en HTML !), et la meta (en HTML obligatoirement,
fortement recommandée en XHTML)
Ce qui donne concrètement :
en XHTML1.1 :CODE
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=ISO-8859-1" />
en XHTML1.0 (traité comme du HTML) :CODE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
Et en HTML :CODE
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Voir
WaSP Asks the W3C : Specifying Character Encoding pour plus de détails.
Enfin, il faut encore que ton contenu
respecte effectivement l'encodage en question, ce qui dépend de l'éditeur HTML que tu utilises. Ceci pose souvent un problème sous Windows avec les éditeurs qui encodent en fait en Windows-1252 les documents supposés être en ISO-8859-1. On ne s'en aperçoit que lorsqu'on utilise
certains caractères Windows illégaux en HTML et XHTML.
CITATION
Tant que j'y pense : est-ce qu'il y a quelque part (pas vraiment cherché non plus) un article sur les touches d'accès ? Je n'en ai jamais utilisé en fait

Voir
Accesskey, l'essai non transformé de l'accessibilité