PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache erzwingt Default-Charset



lynix
04.01.10, 16:35
Hallo, zusammen!

Ich habe auf einem Debian 4.0 Server im Apache (2.2.3) als Default-Charset UTF-8 eingestellt:


$ cat /etc/apache2/conf.d/charset
AddDefaultCharset UTF-8

Dummerweise scheint dieser nun in allen ausgelieferten Seiten UTF-8 zu erzwingen, wie ein curl-Aufruf zeigt:


$ curl -v http://meinedomain.de | grep ContentType
> User-Agent: curl/7.19.7 (x86_64-unknown-linux-gnu) libcurl/7.19.7
< HTTP/1.1 200 OK
< Date: Mon, 04 Jan 2010 16:27:08 GMT
< Server: Apache
< Last-Modified: Sun, 12 Jul 2009 07:10:37 GMT
< ETag: "15487aa-47f5-e6fa3540"
< Accept-Ranges: bytes
< Content-Length: 18421
< Content-Type: text/html; charset=utf-8

Das Beispiel verwendet eine reine HTML-Datei mit korrektem Header und korrekter Datei-Codierung:


$ file -i index.html
index.html: text/html; charset=iso-8859-1
$ grep CONTENT index.html
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">

Es steht also überall ISO-8859-1, trotzdem wird die HTTP-Anfrage in UTF-8 beantwortet, was zu defekten Umlauten führt, da der Browser die Seite als UTF-8 erkennt. Schaltet man manuell auf ISO-8859-1, wird alles korrekt dargestellt.

Hat jemand eine Idee, woran das liegen könnte?


Gruß

lynix

Roger Wilco
04.01.10, 17:11
Dein Beitrag klingt ein bisschen wie "Ich habe `rm <wichtige Datei>` eingegeben und jetzt wurde <wichtige Datei> gelöscht. Hilfe!".

Wenn du nicht willst, dass der Apache httpd die Auslieferung der Daten mit einem erzwungenen Zeichensatz durchführt, dann benutze eben nicht AddDefaultCharset (http://httpd.apache.org/docs/2.2/de/mod/core.html#adddefaultcharset)!

lynix
04.01.10, 20:33
Okay, wer die manpage liest ist klar im Vorteil. Soweit mein Fehler, sry *schäm* :(

Allerdings behebt das das Problem nicht: ich habe das DefaultCharset auf Off gesetzt und trotzdem wird alles mit ContentType UTF-8 übertragen:


$ curl -v http://meinedomain.de 2>&1 | grep Content
< Content-Length: 18421
< Content-Type: text/html; charset=utf-8
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">

Roger Wilco
04.01.10, 20:53
Du hast vermutlich noch irgendwo in deiner Apache-Konfiguration eine AddDefaultCharset- oder eine AddCharset (http://httpd.apache.org/docs/2.2/de/mod/mod_mime.html#addcharset)-Direktive. Von selbst macht das der Apache httpd jedenfalls nicht.

marce
04.01.10, 21:18
was sagt denn file zu der Datei?