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).