Workshop Internet-Präsenz

Verwendung eines falschen Zeichensatzes (charset)

  1. Problembeschreibung
  2. Überprüfung
  3. Behebung des Problems
  4. Links

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