2010-10-06 6 views
0

Je travaille sur un site Web et lorsque je tente de valider la page obtenir l'erreur suivante:Pourquoi mon codage html provoque-t-il une erreur?

The character encoding specified in the HTTP header (iso-8859-1) is different from the value in the element (utf-8). I will use the value from the HTTP header (iso-8859-1) for this validation.

Voici le code dans mon en-tête:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-type" content="text/html;charset=UTF-8"/> 

Je ne vois pas où le iso-8859-1 vient. Aucune suggestion?

Merci.

+0

Il provient de l'en-tête HTTP, comme l'indique le validateur. Essayez d'utiliser Web-Sniffer.net pour afficher les en-têtes HTTP. (Si vous préférez un logiciel de bureau, essayez Fiddler, il est plus configurable, mais Web-Sniffer est plus facile à démarrer.) – TRiG

Répondre

1

Il est le serveur Web qui spécifient l'encodage dans l'en-tête HTTP. Il l'a mis à iso-8859-1. Mais dans votre page, vous avez écrit:

<meta http-equiv="Content-type" content="text/html;charset=UTF-8"/> 

ces deux valeurs sont incompatibles. Je ne peux que supposer que le serveur web a raison (il a quand même envoyé les données), et le validateur fait la même supposition.

Si vous souhaitez envoyer des fichiers codés en UTF-8, vérifiez que le contenu est réellement codé en UTF8 et vérifiez les informations d'en-tête. En fin de compte, le comportement dépend de la configuration du serveur Web et de la génération de la page.

1

Vérifiez les HTTP headers par défaut qui sont envoyés (vous pouvez le voir dans firebug dans l'onglet NET, si vous l'utilisez).

Il existe probablement un en-tête Content-Type défini sur iso-8859-1.

Les en-têtes HTTP sont différents de l'en-tête HTML (qui fait partie du corps du message HTTP) - où votre balise META spécifie UTF-8 comme type de contenu.

Étant donné que les deux valeurs sont incompatibles, vous obtenez une erreur.

Solution:

  • Faire les deux types de contenu identique (soit UTF-8, ou iso-8859-1)
1

C'est l'en-tête de votre fichier HTML, pas les en-têtes HTTP que le serveur envoie. L'élément meta définit des équivalents aux en-têtes HTTP. Si un en-tête HTTP est envoyé et qu'un élément méta existe avec l'équivalent, l'agent utilisateur doit décider lequel utiliser. Cela peut fonctionner dans votre navigateur mais il semble que le validateur que vous utilisez donne préséance à l'en-tête HTTP actuel.

Vous devez donc déterminer comment envoyer votre serveur envoyer l'en-tête de type de contenu correct. Si votre page est générée par un script PHP, vous pouvez utiliser header('Content-type:text/html;charset=UTF-8'); au début de votre script pour le réparer.

Questions connexes