Wenn Sie Validate by URI verwenden, soll der Server die Zeichencodierung in HTTP-Headern ankündigen, genauer im charset
-Parameter des Content-Type
-Headerwerts.In diesem Fall passiert das anscheinend nicht. Sie können die Situation z. mit Rex Swain's HTTP Viewer.
Gemäß Klausel 4.2.5.5 Specifying the document's character encoding in HTML5 CR, "Wenn ein HTML-Dokument nicht mit einer Stückliste beginnt, und seine Codierung nicht explizit von Content-Type-Metadaten angegeben wird, und das Dokument ist kein iframe srcdoc Dokument, dann das Zeichen Die verwendete Codierung muss eine ASCII-kompatible Zeichencodierung sein, und die Codierung muss mithilfe eines Meta-Elements mit einem charset-Attribut oder einem Meta-Element mit einem http-equiv-Attribut im Encoding-Deklarationsstatus angegeben werden. "Dies ist ein wenig kompliziert, aber die Die untere Zeile lautet: Es gibt mehrere Möglichkeiten, die Codierung zu deklarieren, aber wenn keine davon verwendet wird, ist das Dokument nicht konform.
Warum es angibt, so ist etwas spekulativ, aber die allgemeine Idee ist, dass solche Regeln Zuverlässigkeit und Robustheit fördern. Wenn die Regel nicht befolgt wird, verwenden verschiedene Browser möglicherweise andere Standardeinstellungen oder Schätzwerte.
Der Validator geht von Windows-1252 aus, weil das die HTML5-Regeln sind. Die Verarbeitungsregeln sind in 8.2.2.1 Determining the character encoding. Sie sind ziemlich kompliziert, aber sie spiegeln weitgehend die Art wider, wie moderne Browser dies tun (und darauf abzielen, es zu einem Standard zu machen). Die dortigen Regeln sollen auch mit nicht konformen Dokumenten umgehen, aber dies macht diese Dokumente nicht konform; Fehlerverarbeitungsregeln sind nicht wirklich "Fallbacks" und sollten nicht verlässlich sein, zumal sich alte Browser nicht immer an die Regeln halten.
Die Fehlerregeln werden etwas gelockert, wenn alles andere fehlschlägt und eine "implementierungsdefinierte oder benutzerdefinierte Standardzeichencodierung" verwendet werden soll. Es gibt nur "Vorschläge" zu dem, was Browser tun könnten (was wiedergibt, was moderne Browser im Allgemeinen tun), und dies kann die Verwendung des "Gebietsschemas des Benutzers" beinhalten, ein obskures Konzept. Der Validator verwendet dann Windows-1252, vielleicht weil das der Standard für Englisch ist und der Validator "Englisch spricht", oder vielleicht nur, weil es wahrscheinlich ist, dass die Schätzung häufiger korrekt ist als jede andere einzelne Alternative.
Was lässt Sie vermuten, dass ein Browser UTF-8 annimmt, wenn keine Kodierung angegeben ist? Auf welche "Fallback-Regeln" beziehen Sie sich? –
Funktioniert Windows-1252-Codierung obwohl? – pattyd
Interessant ... Ihr HTML-Beispiel wird als html5/utf8 validiert, wenn ich es in das Fenster zur Validierung durch das direkte Eingabefenster einfüge – WebChemist