Pourquoi ce document HTML5 est-il invalide?
Je suis assez confus au sujet d'un message d'erreur que je reçois lorsque je tente de valider tout document HTML sans une méta encodage comme ceci:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>Test</body>
</html>
Le validateur du W3C http://validator.w3.org accepte à contrecoeur le document comme valide avec juste quelques avertissements lorsqu'il est collé dans l'entrée directe à la forme, mais lorsque le document est chargé ou chargée d'URI, la validation échoue avec ce message d'erreur
L'encodage des caractères n'a pas été déclarée. Procédure à l'aide de
windows-1252.
Il y a deux choses que je ne comprends pas sur cette erreur:
- Pourquoi est-ce un manque de codage de caractères considéré comme une erreur, lorsque de secours, il existe des règles?
- Pourquoi le validateur en supposant windows-1252 au lieu de UTF-8, comme n'importe quel navigateur?
Quelqu'un peut m'expliquer ces deux points s'il vous plaît? Je suis assez nouveau à ce genre de choses, donc s'il vous plaît garder avec moi.
source d'informationauteur Kath Brown
Vous devez vous connecter pour publier un commentaire.
Eh bien, cela dépend de ce que vous êtes en utilisant.
l'encodage du fichier HTML a été enregistré avec.
navigator.
Si vous ne voulez pas que le programme de validation de deviner, et l'utilisation UTF-8vous pouvez ajouter la ligne suivante
à l'intérieur de la élément de tête.
C'est le "Direct Input" mode de le validateur que la valeur par défaut est UTF-8. Les agents utilisateurs (navigateurs) sera, par défaut, d'autres codages basé sur un certain nombre de choses:
wikipedia
Validateur du W3C, a déclaré:
Afin de prendre quelques résultats avec une pincée de sel.
Aussi, il n'est pas utile "chute en arrière", le validateur a juste besoin de choisir quelque chose/quelque chose de sorte qu'il peut tenter de valider pour vous.
Le W3C ne peut pas déterminer/décider de l'encodage que vous voulez/besoin d'utiliser. Vous devez le déclarer vous-même basé sur les caractères que vous avez besoin pour servir sur votre page web(s), et ensuite demander le W3C afin de valider votre document à partir de ce.
Ce que l'éditeur/WYSIWYG utilisez-vous pour rendre les pages web?
Peut-on avoir l'URL que vous essayez de valider?
Lorsque vous utilisez Valider par l'URI, le serveur est censé annoncer l'encodage des caractères dans les en-têtes HTTP, plus exactement dans le
charset
paramètre de laContent-Type
valeur d'en-tête. Dans ce cas, ce qui, apparemment, ne se produit pas. Vous pouvez vérifier la situation, par exemple à l'aide de Rex Swain HTTP Spectateur.Conformément à la clause 4.2.5.5 Spécifier le codage des caractères en HTML5, CR, “Si un document HTML ne démarre pas avec une NOMENCLATURE, et son encodage n'est pas explicitement donnée par Type de Contenu de métadonnées, et le document n'est pas un iframe srcdoc document, puis le codage de caractères utilisé doit être compatible ASCII codage de caractères, et l'encodage doit être spécifié à l'aide d'un élément meta avec un jeu de caractères à un attribut ou un élément meta avec un http-equiv attribut dans la déclaration de Codage de l'état.” C'est un peu compliqué, mais la ligne de fond est: il y a plusieurs façons de déclarer l'encodage, mais si aucun d'entre eux est utilisé, le document est non conforme.
Pourquoi il spécifie donc, est un peu théorique, mais l'idée générale est que ces règles de promouvoir la fiabilité et la robustesse. Quand la règle n'est pas obéi, différents navigateurs peuvent utiliser des valeurs par défaut différentes ou conjectures.
Le validateur n'assume windows-1252, parce que c'est ce que HTML5 règles de mener. Les règles de traitement sont en 8.2.2.1 Déterminer l'encodage des caractères. Ils sont assez complexes, mais elles reflètent en grande partie la façon dont les navigateurs modernes (et vise à devenir une norme). Les règles sont destinées à traiter les cas de non-conformité des documents, aussi, mais cela ne signifie pas que ces documents conformes; erreur de traitement de règles ne sont pas vraiment des “réserves” et ne doit pas être invoqué, en particulier depuis les anciens navigateurs ne sont pas toujours les règles du jeu.
L'erreur de règles un peu lâche quand il s'agit d'une situation où tout le reste échoue et une “mise en œuvre définie ou spécifiée par l'utilisateur codage de caractères par défaut” doit être utilisé. Il y a juste des “suggestions” sur quels navigateurs pourraient faire (encore une fois, de ce que les navigateurs modernes généralement), ce qui peut impliquer l'utilisation de la “locale de l'utilisateur”, un concept obscur. Le validateur utilise windows-1252 alors, peut-être parce que c'est la valeur par défaut pour l'anglais et le valideur “parle” anglais, ou peut-être juste parce que c'est la supposition qu'il est prévu de corriger le plus souvent que toute autre alternative.