Der Martin: Unicode UTF-16LE Darstellungsprobleme

Beitrag lesen

Mahlzeit,

Ich arbeite mit Microsoft Visual Studio und programmiere den Webserver in C++ Unicode.

oh, Respekt.

Unicode wird hier als UTF-16LE dargestellt

Windows-typisch eben ...

d.h. auch der komplette Http-Header wird in diesem Format erzeugt.

Und genau das darf nicht sein.

Wenn ich dich richtig verstanden habe, dann muss der Http-Header aber in jedem Fall in reinem ASCII-Code vorliegend sein? Also im 8Bit-Modus? Damit ein Web-Browser überhaupt die Chance hat diesen zu verstehen?

Genau.

Also statt "0x48005400540050002f00" muss es "0x485454502f" lauten...

Genau. :-)

die XML-Deklaration schickt aber zumindest ältere IEs in den Quirks Mode. Wenn du das Dokument eh als text/html auslieferst und im HTTP-Header die richtige Angabe zur Zeichencodierung steht, kannst du sie auch weglassen.
Soweit ich das gelesen habe, wird die Information hier nur dann ausgewertet, wenn kein Content-Type Header mitgeschickt worden ist bzw. nicht die volle Information beinhaltet.

Nein, hier verwechselst du etwas.
Ein Content-Type-Header muss bei einer HTTP-Antwort immer sein - allerdings muss er nicht zwingend eine charset-Angabe haben. Wenn die fehlt, wird ein Browser nach einem gleichnamigen meta-Element im Dokument suchen, wenn er HTML "spricht" (das ist der übliche Fall). Die XML-Deklaration am Anfang wird in diesem Modus sowieso ignoriert, verhindert aber im IE6 (und IE7?) den "Fast-Standard"-Mode.
Ein XHTML-Dokument kann aber auch als application/xml+xhtml anstatt text/html ausgeliefert werden. Das hat zur Folge, dass ältere IEs nichts mehr damit anfangen können, moderne Browser das Dokument aber tatsächlich nach XML-Regeln verarbeiten. *Dann* ist auch die XML-Deklaration sinnvoll, vor allem wenn man eine andere Zeichencodierung als UTF-8 verwendet.

Ist eine HTML-Version4-Deklaration sinnvoller (damit keine Browser durcheinander kommen)?

Das kannst du halten wie du magst. Ob HTML oder XHTML ist weitgehend Geschmackssache, und solange du das Dokument HTML-kompatibel als text/html auslieferst, sind die Unterschiede in der Praxis kaum relevant - es sei denn, du als Autor profitierst von der XML-Konformität eines Dokuments.

Ciao,
 Martin

--
"So schnell waren wir noch nie am Unfallort", sagte der Polizist zu seinem Kollegen, als er einen Laternenmast gerammt hatte.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(