Workshop Internet-Präsenz
Verwendung eines falschen Zeichensatzes (charset)
Problembeschreibung
Gelegentlich kann es vorkommen, dass der im Dokumentkopf einer HTML-Datei spezifizierte Zeichensatz vom Browser ignoriert wird. Nachfolgendes Beispiel zeigt eine derartige Zeichsatzdefinition am Beispiel des Zeichensatzes UTF-8.
<head> <title>Dies ist ein Titel</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> ... </head>
Die Ursache ist meist, dass der httpd-Server einen anderen Zeichensatz vorgibt. Servervorgaben werden von vielen Browsern als dominant angesehen (müssen es sogar) und verhindern die Nutzung der http-Äquivalente im Dokumentkopf.
Überprüfung
Mit Hilfe des Werkzeugs wget, das eigentlich für den nicht-interaktiven Download von Dateien von http- oder ftp-Servern gedacht ist, lassen sich die Server-Spezifika anzeigen. (Das Werkzeug gibt es als UNIX- und Windows-Kompilat, siehe unten).
Nach dem Aufruf
wget -S --spider http://www.xxx.de
erhalten Sie ein Protokoll mit den Servereigenschaften, wie im nachfolgenden Beispiel ersichtlich ist. http://www.xxx.de ist dabei durch die zu untersuchende Domäne zu ersetzen, in unserem Beispiel http://soziologie.uni-halle.de.
--11:07:00-- http://soziologie.uni-halle.de/ => `index.html' Resolving soziologie.uni-halle.de... 141.48.74.200 Connecting to soziologie.uni-halle.de[141.48.74.200]:80... connected. HTTP request sent, awaiting response... 1 HTTP/1.1 200 OK 2 Date: Thu, 01 Jun 2006 09:08:01 GMT 3 Server: Apache/1.3.29 (Unix) PHP/4.3.4 4 Content-Location: index.html 5 Vary: negotiate,accept-language 6 TCN: choice 7 Last-Modified: Wed, 24 May 2006 11:45:24 GMT 8 ETag: "26f08-1fd3-44744754;26f10-e9-43e0e714" 9 Accept-Ranges: bytes 10 Content-Length: 8147 11 Keep-Alive: timeout=15, max=100 12 Connection: Keep-Alive 13 Content-Type: text/html 14 Expires: Thu, 01 Jun 2006 09:08:01 GMT 200 OK FINISHED --11:07:00-- Downloaded: 0 bytes in 0 files
Die uns interessierende Zeile ist die hervorgehobene Zeile 13 (es kann auch eine andere Zeilennummer sein). Sie enthält den Inhaltstyp der Datei http://soziologie.uni-halle.de/index.html, aber ohne eine Zeichensatzvorgabe. Stünde anstelle
13 Content-Type: text/html
nun z.B.
13 Content-Type: text/html; charset=ISO-8859-1
wäre ersichtlich, dass der Server eben diesen Zeichensatz ISO-8859-1 als zu verwendenden Zeichensatz vorgibt. Die Angabe eines anderen Zeichensatzes im Dokumentkopf würde nun ignoriert.
Behebung des Problems
Der Server sollte üblicherweise keine Zeichensatz- und Sprachdefinitionen
vorgeben. In vielen Fällen wird aber der Zeichensatz ISO-8859-1 standardmäßig
als Zeichensatz ausgegeben. Im Falle des Apache ist hierfür die Direktive
AddDefaultCharset
in den Konfigurations- oder .htaccess-Dateien
zuständig.
Syntax: AddDefaultCharset On|Off|charset Standard: AddDefaultCharset On oder Off
Man muss den Wert Off setzen. Man sollte weder einen Wert wie utf-8 vorgeben noch den Wert On (On bedeutet Zeichensatz ISO-8859-1) setzen.
Links
- Wget’s Website (Mauro Tortonesi).
- [FTP] Unix-Versionen von wget.
- wget for windows (download.freenet.de).