RolWg hat geschrieben:Als Antwort-Header bekomme ich:
Code: Alles auswählen
RESPONSE HTTP/1.1 200 OK
[..]
Content-Type: text/html; charset=utf-8
Wenn du in dieser Seite kein <meta>-Content-Type-Element hast, dann gibt der Server die Zeichenkodierung korrekt aus, AddDefaultCharset funktioniert also und die Validator-Meldung muss eine andere Ursache haben.
Merkwürdig finde ich "Connection Keep-Alive" und "Transfer-Encoding chunked"
Das ist vollkommen normal. Wenn du von Oma am Telefon das Kirschkuchenrezept haben möchtest und dann gleich noch wissen willst, ob sie Sonntag zum Kaffee kommt, wählst du ja auch nicht zweimal, sondern stellst beide Fragen in derselben Verbindung. Genauso läuft es zwischen Browser und Server, der Browser stellt nicht für jede Grafik und was sonst noch von einer Seite benötigt wird, eine neue Verbindung her, sondern benutzt die, die er schon hat. Erhöht die Geschwindigkeit und verringert die Netzlast.
Die Kodierung chunked ist eine sichere Methode, die Daten gerade bei solchen stehenden Verbindungen unfallfrei zu übertragen.
Gibt's da eigentlich Regeln, welches von beiden wann besser genommen werden sollte?
Wenn der Benutzer deine Seite auf seinem Rechner abspeichert (nicht als Lesezeichen, sondern richtig als Datei), dann geht zumindest bei Firefox die per HTTP übermittelte Information zur Zeichenkodierung verloren. Da der Standardzeichensatz iso-8859-1 bzw. windows-1252 ist, gibt's Zeichensalat, ist die Seite eigentlich utf-8-kodiert. Schreibst du die Zeichenkodierung stattdessen als <meta>-Element in Seite, stellt sich das Problem logischerweise nicht.
Das ist aber IMHO auch der einzige Vorteil der Verwendung von <meta>, ansonsten sind beide gleichwertig, wie ja auch das "equiv" (äquivalent) in <meta http-equiv= …> aussagt.
Abraten würde ich davon, beide Wege zu nutzen. Sind beide Angaben gleich, ist das zwar wurscht, aber bei unterschiedlichen Angaben ist nicht sicher, wer bei welchem Browser Vorrang hat, was dann im dümmsten Fall zu jenen unerklärlichen Darstellungsfehlern führt, an denen man sich stundenlang die Zähne ausbeißt.
Genaugenommen schreibt der W3C-Validator:
"This document was Tentatively checked as XHTML 1.0 Transitional"
Diese "Vorläufigkeit" bezieht sich auf das ausschließliche Encoding mittels .htaccess.
Also ich liefere die Kodierung wie du im HTTP-Kopf, nicht als <meta>, und bekomme "This document was successfully checked as HTML 4.01 Strict!", trotz des Hinweises "No Character encoding declared at document level".
Bei XML bzw. XHTML hat sich in Sachen Zeichenkodierung AFAIK nichts geändert.
Kannst du vielleicht die URL nennen?
dann ist das Encoding mittels .htaccess nur ein "default-overriding"?
Es gibt verschiedene Möglichkeiten, in der Serverkonfiguration festzulegen, ob und welche Kodierungsinformation per HTTP ausgegeben wird. Mit AddDefaultCharset legst du fest, dass alle (Text-) Objekte, die
nicht von sonstwoher eine Kodierungsinfo haben, eine Standardkodierungsinfo verpasst bekommen.
"Sonstwoher" bezieht sich insbesondere auf die Option
AddCharset sowie auch
AddType.
Du kannst beispielsweise der Dateiendung .html auch explizit utf-8 zuordnen, indem Du
AddCharset utf-8 .html oder
AddType "text/html; charset=utf-8" .html einträgst. Oder du legst eine separate Dateiendung fest;
AddCharset iso-8859-15 .15 würde der Datei bla.html.15 den Typ text/html (aus
AddType text/html .html) und die Kodierung iso-8859-15 (aus
AddCharset iso-8859-15 .15) zuordnen.
Diese Einstellungen würden jene von AddDefaultCharset überschreiben - das ist beim W3C mit "default-overriding" gemeint.