Re: Etch: non-breaking space in HTML-Doku wird als 2-Byte-Zeichen dargestellt
On 06.11.06 21:42:58, Holger Rauch wrote:
> ich habe hier den interessanten Fall, daß ein non-breaking space in einer
> HTML-Doku vom Apache 2.2.3 offensichtlich als 2-Byte-Zeichen an den web
> browser zurückgeliefert wird. Im Firefox erscheint dann unter Windows ein ?,
> unter Linux F0 FD in einem Rahmen drin (die genaue Hex-Kombination müßte ich
> noch mal nachschauen).
Was sagen die HTTP-Header? Welche Kodierung hat die HTML-Datei?
> Die HTML-Doku wurde aus DocBook XML sources mit den XSL stylesheets erzeugt.
> Das Problem tritt unabhändig von der Version der XSL stylesheets auf (nicht
> nur mit der aktuellen V 1.71.1 sondern auch mit älteren Versionen). In den
> erzeugten HTML pages steht als encoding ISO8859-1 drinnen. Andere Zeichen
> wie z. B. Umlaute werden richtig dargestellt. Gerade in HTML-Doku, die
> mittels der XSL stylesheets erzeugt wurde, wird an verschiedenen Stellen
> massiv Gebrauch von non-breaking spaces gemacht (u. a. in den
> Naviagions-Links am Anfang und am Ende der web pages).
Ich vermute mal non-breaking-spaces nicht als HTML-Entity? Wieso nicht,
wuerde um das Problem "herum" arbeiten.
Ansonsten ist die Ursache vmtl. das XSL stylesheet, ich vermute mal die
Umlaute da drin sind latin1 kodiert, die nbsp's aber utf-8 kodiert.
Jedenfalls kriegst du wohl am eine eine HTML-Datei die latin1 und utf-8
Kodierung nutzt, da latin1 im Header angegeben ist nimmt der Browser das
an und zeigt dir entsprechend die 2 Bytes als 2 Zeichen an.
> Legt man die generierte HTML-Doku lokal auf dem Rechner ab und surft
> mit einer "file://"-URL drauf, wird der non-breaking space KORREKT
> dargestellt. Folglich bleibt eigentlich nur noch der Apache übrig,
> der die HTML-Doku verhunzt.
Hmm, interessant. Dann ist vmtl. das Default-Encoding des Apache falsch
gesetzt. Um das rauszukriegen muesste man mal in die HTTP-Header
schauen die vom Apache kommen und mal mit nem hexeditor an die Datei
gehen und schauen ob wirklich nur die spaces 2-Byte-Kodiert sind.
> Der der Apache ja als user www-data läuft, habe ich diesen account mal
> unlocked (ein passwd verpaßt), und dann als user www-data die LANG und
> LC_ Variablen kontrolliert. LANG steht auf de_DE@euro und LC_MESSAGES
> auf C, die übrigen LC_ Variablen sind nicht gesetzt. Die de_DE@euro
> locale ist auf dem System auch generiert worden und somit vorhanden.
Das ist unerheblich fuer den Apachen.
> Naheliegende Fragen: Hat jmd. von Euch schon mal so ein (oder ein Ähnliches)
> Problem gehabt? Falls ja, gibt es für den Apache eine Konfigurations-Option,
> mit der man die o.g. Unschönheit beheben könnte?
Ja, das default-charset setzen. Befehl weiss ich so aus dem Kopf nicht,
aber in apache2-Default-Konfig ist eine auskommentierte Zeile drin...
Andreas
--
You have a strong appeal for members of your own sex.
Reply to: