Hello out there!
Bedeutet, dass bei UTF-8 und UTF-16 kein HTTP-Header nötig ist?
kannst du dir das Web ohne HTTP vorstellen? Ich nicht.
*grins* Meinte natürlich die Zeichensatzangabe im Header.
Der Zeichen_satz_ wird nie angegeben; denn der ist bei HTML/XML _immer_ UCS [ISO10646]/Unicode. [HTML401 §5.1, XML §2.2]
Wolltest sagen: Bedeutet, dass bei UTF-8 und UTF-16 keine Angabe der Zeichen_codierung_ HTTP-Header nötig ist?
Stimmt, die ist nicht nötig. Ist nämlich eine solche nicht vorhanden, gilt die (X)HTML-Meta-Angabe HTTP-EQUIV (wie der Name sagt: ein Äquivalent zum HTTP-Header).
Ist solche auch nicht vorhanden, gilt als Zeichencodierung als Default für XML (also auch für XHTML als 'application/xhtml+xml') UTF-8 bzw. UTF-16 (welches von beiden und ob bei letzterem big endian oder little endian, kann der Client anhand der ersten paar Oktetts (BOM) herausfinden).
Bei HTML (Achtung: auch für als 'text/html' verarbeitete XHTML-Dokumente!) gilt als Default IIRC ISO 8859-1. Das führt bei XHTML zwangsläufig zu einem Dilemma, weshalb es gerade dort keine gute Idee ist, keine Zeichencodierung anzugeben.
Klingt so, als benötige man die explizite Mitteilung nur dann, wenn man eben nicht UTF-8 oder UTF-16 verwendet
... und keine Angabe im HTTP-Header oder dessen Äquivalent HTTP-EQUIV gemacht wird.
Auf der ganz sicheren Seite ist man, wenn man UTF-8 codiert, den Server das angeben lässt, auch die HTTP-EQUIV-Angabe macht – und zugunsten des standard compliant mode auf die XML-Deklaration verzichtet, im Gegensatz zur Empfehlung [XHTML1 §3.1.1]:
„Eine XML-Deklaration ist nicht in allen XML-Dokumenten erforderlich. Den Autoren von XHTML-Dokumenten wird jedoch sehr empfohlen, in all ihren Dokumenten XML-Deklarationen zu verwenden. Eine solche Deklaration ist erforderlich, wenn die Zeichenkodierung des Dokuments nicht die Standardkodierung UTF-8 oder UTF-16 ist und keine Kodierung durch ein Higher-Level-Protokoll bestimmt wurde.“
See ya up the road,
Gunnar
„Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)