Probleme bei Nutzung von UTF8
Autor: Vilma Plum
eingetragen: Freitag, 24. Juni 2005 um 08:09 Uhr (25/2005 Kalenderwoche)
geändert: Donnerstag, 11. Oktober 2007 um 13:40 Uhr (41/2007 Kalenderwoche)
Kategorien: Apache, HTML, UTF-8 / ISO,
Text:
Will man statt des hier üblichen Western ISO-5988-1 UTF-8 in seinen Websites verwenden, bekommt man mit dem Apache 2.* evt Probleme. Apache ab der Version 2.0 hat per default ein neues module eingebunden (mod_negotiation). Dieses Modul sorgt dafür, dass die vom Browser bei der Anfrage evt. übermittelten preferences im header der request, ausgewertet werden. Das heisst für unseren Fall, dass unabhängig von den Einstellungen, die im meta-tag der Website fürcharset gesetzt werden, im http-header eine andere charset-Angabeüfr die Antwort übermittelt wird. Der Browser reagiertnun nicht mehrauf die charset-Angabedeshtml-Dokumentes, sondern er reagiert auf die Angabedes http-headers." target="_blank" title="Web-Adresse öffnet im neuen Fenster ...">http-headers.
Diese automatische Überschreibung führt in unseren Region in der Regel zu Problemen, wenn man nicht den üblichen ISO-5988-1 sondern UTF-8 verwenden will.
Wichtig ist weiterhin, das im form-tag in HTML das Attribut accept-charset="UTF-8" eingesetzt wird. Damit encoded der Browser jegliche Eingabe in utf8.
Lösung:
Der Apache 2.* bietet mehrere Ebenen der Lösungsmöglichkeit in der httpd.conf.
Die Direktive AddDefaultCharset kann auf einen bestimmten Wert gesetzt werden ( ISO-5988-1 oder UTF-8) oder sie kann auf On oder Off gesetzt werden. Beide letzte Möglichkeiten lassen jedoch den Apache wieder auf sein praktisches negotiation module zugreifen, welches dann die html-Vorgaben ignorieren lässt. Diese Direktive sollte auf UTF-8 stehen um mod_negotiation zu umgehen.
Die Direktive kann sowohl für die gesamte Serverkonfiguration gesetzt werden, aber auch für virtuelle hosts und für directories. Die Gültigkeit ist wie bei stylesheets geregelt, je tiefer die Ebene desto höher die Wertigkeit.
Quellcode:
Apache
<Directory '/opt/lampp/htdocs/spider.koeln.zadi.de/htdocs/infosys_plus_1.17'>
AddDefaultCharset UTF-8
</Directory>
<html>
<form ... accept-charset="UTF-8">