web-dev-qa-db-fra.com

charset = iso-8859-1 avec <! DOCTYPE HTML> émettant un avertissement?

Je viens de valider un document html à l'aide du W3-validator , et j'ai constaté que si

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

avec:

<!DOCTYPE HTML>
  • Il jette un avertissement Line 4, Column 72: Using windows-1252 instead of the declared encoding iso-8859-1.

Cependant, il est corrigé si j'utilise:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Je ne comprends pas vraiment ce qui se passe, et je ne sais même pas comment utiliser le tag DOCTYPE.

Quelqu'un peut-il m'indiquer dans la bonne direction pour comprendre:

  • pourquoi cela se produit
  • et, comment utiliser la balise DOCTYPE
9
ajax333221

Points de couple:

  1. Toute validation HTML5 doit être prise avec un grain de sel. La spécification est toujours en cours de développement et tout n’est pas figé.
  2. Vous utilisez la syntaxe HTML4 pour cette balise méta. Essayez <meta charset="iso-8859-1">

Cela dit, les validateurs HTML ne servent plus à cette fin de nos jours.

Aussi, pourquoi avez-vous besoin de spécifier ce jeu de caractères particulier?

MODIFIER:

Mon mauvais, apparemment le défaut pour HTML4 était iso = 8869-1. Cela dit, le jeu de caractères par défaut pour HTML5 est utf-8.

Plus d'informations sur le doctype HTML5 sont disponibles dans cet article de John Resig

6
Andrew Stewart

Changer le DOCTYPE, c’est tout simplement éteindre l’avertissement - cela ne règle rien en réalité.

iso-8859-1 et windows-1252 sont des codages très similaires. Ils ne diffèrent que par les caractères associés aux valeurs de 32 octets allant de 0x80 à 0x9F, qui sont mappés dans iso-8859-1 avec des caractères de contrôle et dans windows-1252 avec certains caractères utiles tels que le symbole Euro.

Les caractères de contrôle sont inutiles en HTML, et les auteurs Web déclarent souvent à tort iso-8859-1 et utilisent pourtant une ou plusieurs de ces 32 valeurs comme si elles utilisaient windows-1252. Ainsi, les navigateurs qui voient le jeu de caractères iso-8859-1 déclaré seront automatiquement modifiés en windows-1252.

Le validateur vous avertit simplement que cela se produira. Si vous n'utilisez aucune des valeurs sur 32 octets, vous pouvez simplement ignorer l'avertissement - ce n'est PAS une erreur. Si vous le souhaitez et que vous souhaitez réellement l'interprétation iso-8859-1 des valeurs d'octet et non l'interprétation windows-1252, vous faites quelque chose de mal.

Encore une fois, cette commutation se produit dans les navigateurs pour n'importe quel DOCTYPE, c'est simplement que le validateur HTML5 est plus utile que ce que le validateur HTML4 vous dit.

16
Alohci

"Utilisation de windows-1252 au lieu du codage déclaré iso-8859-1." Cela signifie que le fichier a été enregistré avec la fenêtre de codage 1252 lors de sa création (alias Western Windows 1252 ou cp1252) et que votre déclaration de jeu de caractères dit "hé, lisez ceci. fichier avec iso-8859-1 "quand ce n’est pas le codage du fichier.

Le méta-jeu existe pour cette raison. Il existe pour déclarer le codage du fichier que vous envoyez/lisez/utilisez afin que, par exemple, un navigateur lise le document, il sache quel codage le fichier utilise.

En détail, vous avez déclaré ce charset:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

Mais le fichier que vous validez est en fait codé sous Windows 1252. Comment? Pourquoi? Vérifiez l'éditeur de texte que vous utilisez et le codage utilisé pour enregistrer les fichiers. Si l'éditeur peut être configuré pour modifier le codage, choisissez celui que vous souhaitez utiliser.

À propos de HTML5

En utilisant

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

ou

<meta charset="iso-8859-1">

sont tous deux valables pour HTML5. Voir <meta charset = "utf-8"> vs <meta http-equiv = "Content-Type">

4
delroh

Faire ce qui suit:

ISO 8859-15 ouais -15 et cela fonctionnera. Je sais que cette réponse est nouvelle et que la question est ancienne, mais l’idée est que les futurs utilisateurs venant de moteurs de recherche comme moi obtiennent la bonne réponse.

1
novato

Je peux voir que c’est une vieille question, mais j’ai pensé qu’il valait mieux donner une réponse actualisée. J'ai peut-être remarqué quelque chose que d'autres n'ont pas (après avoir rencontré le même problème et donc trouvé ce message avant de le résoudre moi-même).

Le validateur W3C offre des options pour lesquelles l'encodage utilisé par le validateur. Vous avez spécifié le codage dans votre document, vous devriez donc voir "Codage: iso-8859-1" dans le bloc d'informations supérieur une fois que le validateur a été exécuté. À droite de cela, il y a un menu déroulant. Changez le choix de "(détecter automatiquement)" en "iso-8859-1 (Europe occidentale)". Le validateur utilisera ensuite iso-8859-1 à la place de son propre choix et vous ne recevrez pas l'erreur.

1
Roger F. Gay

Ne placez pas trop de stock dans les validateurs. Il y a généralement trop de solutions de contournement pour Internet Explorer, en particulier dans le fichier css, qui vont déclencher la validation. Si vos pages fonctionnent dans tous les navigateurs et que votre client est satisfait, est-ce que ce que dit un validateur a de l'importance?

Si vous spécifiez le type de document html5, vous devez être cohérent avec l'attribut meta charset. Essayez ceci pour vos pages:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
</head>

<body>
</body>
</html>
0
JoeL