HTML / XHTML / WML / XML Validator |
||||||||||||||||||
| de | en | ||||||||||||||||||
|
||||||||||||||||||
Als Grundlage zur Ermittlung der zu benutzenden Zeichensatzkodierung
eines HTML-Dokumentes wurde die W3C-Spezifikation
zu HTML 4.01 benutzt. Allerdings lässt diese Spezifikation einige Fragen offen. Folgende Punkte sind bis zur Zeit ungeklärt bzw. widersprüchlich.
| |||||||||||
HTTP-Header: Content-Type: text/html; charset=ISO-8859-1 1: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 2: "http://www.w3.org/TR/html4/loose.dtd"> 3: 4: <html> 5: <head> 6: <title>no error</title> 7: <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 8: </head> 9: <body></body> 10: </html> | Dieses Dokument enthält eine gültige Zeichensatzangabe im Meta-Tag und im HTTP-Header. Es muss die Zeichensatzkodierung des HTTP-Header verwendet werden. | ||||||||||
HTTP-Header: Content-Type: text/html 1: EF BB BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 2: "http://www.w3.org/TR/html4/loose.dtd"> 3: 4: <html> 5: <head> 6: <title>Byte order Mark != Meta-Charset</title> 7: <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 8: </head> 9: <body>äöüÄÖÜß</body> 10: </html> | Dieses in UTF-8 kodiertes HTML-Dokument möchte laut Meta-Tag mit ISO-8859-1 verarbeitet werden. Auf diesen Konflikt sollte hingewiesen werden. | ||||||||||
HTTP-Header: Content-Type: text/html; charset=UTF-8 1: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2: "http://www.w3.org/TR/html4/loose.dtd">
3:
4: <html>
5: <head>
6: <title>HTTP-Header != Meta-Charset</title>
7: <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
8: </head>
9: <body>äöüÄÖÜß</body>
10: </html>
| Die Zeichensatzkodierung im Meta-Tag weicht von der Zeichensatzkodierung im HTTP-Header ab. Es muss die Zeichensatzkodierung des HTTP-Header verwendet werden. | ||||||||||
HTTP-Header: Content-Type: text/html 1: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 2: "http://www.w3.org/TR/html4/loose.dtd"> 3: 4: <html> 5: <head> 6: <title>missing http-charset</title> 7: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 8: </head> 9: <body>äöüÄÖÜß?</body> 10: </html> | Im HTTP-Header fehlt die Zeichensatzkodierung. Es muss die Zeichensatzkodierung des Meta-Tag verwendet werden. | ||||||||||
HTTP-Header: Content-Type: text/html; charset=UTF-8 1: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 2: "http://www.w3.org/TR/html4/loose.dtd"> 3: 4: <html> 5: <head> 6: <title>missing meta-charset</title> 7: </head> 8: <body>äöüÄÖÜß</body> 9: </html> | In diesem Beispiel fehlt im Dokument jegliche Angabe zu einer Zeichensatzangabe. Nur im HTTP-Header wird die zu benutzende Zeichensatzkodierung mitgeteilt. Da keine Zeichensatzkodierung zu ermitteln ist, wenn das Dokument nicht per HTTP übertragen wird (z.B. bei einer lokalen Kopie), wird ein Hinweis ausgegeben. | ||||||||||
HTTP-Header: Content-Type: text/html 1: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 2: "http://www.w3.org/TR/html4/loose.dtd"> 3: 4: <html> 5: <head> 6: <title>missing all-charset</title> 7: </head> 8: <body>äöüÄÖÜß</body> 9: </html> | Es wurde weder im Meta-Tag, Byte Order Mark oder im HTTP-Header eine Zeichensatzkodierung
gefunden. Die W3C-Spezifikation verlangt zwar RFC2616 zu ignorieren, und somit die Verwendung von ISO-8859-1, sie sagt aber nicht welche Zeichensatzkodierung stattdessen verwendet werden soll. Aus diesem Grund haben wir uns dazu entschlossen in solchen Fällen die Validierung mit einer Fehlermeldung abzubrechen. | ||||||||||
Ab hier folgen Beispiele mit HTML-Dokumenten, welche in UTF-16 kodiert sind. | |||||||||||
HTTP-Header: Content-Type: text/html; charset=UTF-16 1: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 2: "http://www.w3.org/TR/html4/loose.dtd"> 3: 4: <html> 5: <head> 6: <title>no error UTF-16 without byte order mark</title> 7: <meta http-equiv="Content-Type" content="text/html; charset=utf-16"> 8: </head> 9: <body>äöüÖÄÜß</body> 10: </html> | Dieses HTML-Dokument wurde in UTF-16 mit fehlenden Byte Order Mark kodiert und enthält keine Fehler. | ||||||||||
HTTP-Header: Content-Type: text/html; charset=UTF-16 1: FF FE<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2: "http://www.w3.org/TR/html4/loose.dtd">
3:
4: <html>
5: <head>
6: <title>no error UTF-16 with byte order mark</title>
7: <meta http-equiv="Content-Type" content="text/html; charset=utf-16">
8: </head>
9: <body>äöüÖÄÜß</body>
10: </html>
| Dieses HTML-Dokument wurde in UTF-16 mit vorhandenem Byte Order Mark kodiert und enthält keine Fehler. | ||||||||||
Die folgende Beispiele sind in UTF-16 inklusive Byte Order Mark kodiert. | |||||||||||
HTTP-Header: Content-Type: text/html; charset=ISO-8859-1 1: FF FE<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2: "http://www.w3.org/TR/html4/loose.dtd">
3:
4: <html>
5: <head>
6: <title>UTF-16; HTTP-Header != BOM</title>
7: <meta http-equiv="Content-Type" content="text/html; charset=utf-16">
8: </head>
9: <body></body>
10: </html>
| In diesem Beispiel weicht die Zeichensatzangabe im HTTP-Header von der Kodierungsinformation des Byte Order Mark ab.
Als Zeichensatzkodierung wird in solchen Fällen die Angabe im HTTP-Header verwendet. Da in diesem Beispiel das Dokument in UTF-16 kodiert ist, aber mit ISO-8859-1 verarbeitet werden muss, sollten diverse Parserfehler auftreten. | ||||||||||
HTTP-Header: Content-Type: text/html; charset=UTF-161: FF FE<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 2: "http://www.w3.org/TR/html4/loose.dtd"> 3: 4: <html> 5: <head> 6: <title>UTF-16; HTTP-Header != META</title> 7: <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 8: </head> 9: <body>äöüÄÖÜß</body> 10: </html> | Die Zeichensatzkodierung im Meta-Tag weicht von der Zeichensatzkodierung des HTTP-Header ab. Es muss die Zeichensatzkodierung des HTTP-Header verwendet werden. | ||||||||||
HTTP-Header: Content-Type: text/html 1: FF FE<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 2: "http://www.w3.org/TR/html4/loose.dtd"> 3: 4: <html> 5: <head> 6: <title>UTF-16; BOM != META</title> 7: <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 8: </head> 9: <body>äöüÄÖÜß</body> 10: </html> | Dieses in UTF-16 kodierte HTML-Dokument möchte laut Meta-Tag mit ISO-8859-1 verarbeitet werden. Laut Byte Order Mark handelt es sich aber um ein in UTF-16 kodiertes Dokument. Auf diesen Konflikt sollte hingewiesen werden. | ||||||||||
| Datenschutzerklärung | |