Gunnar Bittersmann: Validator +Interpretation

Beitrag lesen

Hello out there!

Meine Glaskugel zeigt, du hast das Dokument in ISO 8859-1 o.ä. codiert gespeichert.

Die Zeichenfolge '">über' wird also durch die Oktettfolge 22 3E FC 62 65 72 dargestellt.

Ein Client (auch der Validator ist einer) interpretiert das Dokument als UTF-8-codiert, entweder weil du das so angegeben hast oder weil dein Server das so angibt (dessen Angabe hat Vorrang).

Der Client liest also 22: '"'. Dann 3e: '>', noch alles OK. Dann liest er 'FC', und kann damit nichts anfangen, da das eine ungültige Oktettfolge ist: als erstes Oktett eines Zeichens kommen nur 0xxxxxxx, 110xxxxx oder 1110xxxx (hexadezimal also 00–7F oder C0–EF) in Frage.

Die HTML-Spec sagt: „Benutzerprogramme können einen Mechanismus bieten, der es Benutzern gestattet, inkorrekte »Zeichensatz«-Information zu überschreiben. Wenn ein Benutzerprogramm solch einen Mechanismus anbietet, sollte es das jedoch nur für die Browserfunktionalität tun und nicht für Editierfunktionen, um das Erstellen von Webseiten zu vermeiden, die mit einem inkorrekten »charset«-Parameter gekennzeichneten sind.“ [HTML401 §5.2.2] Ein Validator bietet offensichtlich keine solchen Mechanismus, und tut gut daran.

Für XML (damit auch für XHTML) gilt: „Es ist ein kritischer Fehler, wenn ein XML-Prozessor ein Entity in einer Kodierung bekommt, die er nicht verarbeiten kann. Es ist ein kritischer Fehler, wenn für ein XML-Entity (durch Vorgabewert, Kodierungsdeklaration oder Protokoll) eine bestimmte Kodierung angegeben wird, das Entity jedoch Oktett-Folgen enthält, die in dieser Kodierung nicht zulässig sind. Ebenso ist es ein kritischer Fehler, wenn ein XML-Entity keine Kodierungsdeklaration enthält und sein Inhalt kein gültiges UTF-8 oder UTF-16 ist.“ [XML §4.3.2] Ein XML-Prozessor muss dann seinen normalen Dienst einstellen.

See ya up the road,
Gunnar

--
“Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)