AddDefaultCharset und unterschiedliche Zeichensätze

Autor: Christian Ahmer, erstellt: 13.12.2010, zuletzt geändert: 16.09.2014
Kategorien: Web

Um nur bestimmte Dateien auf einem Webhosting mit unterschiedlichen Kodierungen (Charsets) auszuliefern, kann man sich der Apache Direktive AddDefaultCharset im Zusammenhang mit FilesMatch bedienen.

Man kann einen ganz normalen erweiterten regulären Ausdruck dazu verwenden, um nur bestimmte Dateien mit einer speziellen Kodierung auszuliefern.

Das kann man sich z.B. zunutze machen, wenn man eine Webseite hat, auf der unterschiedliche Seiten mit voneinander verschiedenen Charsets (Zeichensätzen) ausgeliefert werden sollen.

Beispiel: Eine Webseite hat folgende html Dateien:

seite-bla.html (iso-8859-15)
seite-blubb.html (iso-8859-15)
seite-blubb2.html (iso-8859-15)
seite-irgendwas-1.html (utf-8)
seite-irgendwas-2.html (utf-8)
seite-irgendwas-3.html (utf-8)

Da HTML Seiten keine Header senden können, würden die Seiten in der Standardkodierung des Webservers ausgeliefert werden, was aber zu problemen führt.
Ist die Standardkodierung z.B auf iso-8859-15 gesetzt, werden die Sonderzeichen auf den Seiten in utf-8 falsch angezeigt und andersrum genauso.

Wir wollen die AddDefaultCharset Direktive in der zum Apache Webserver gehörigen .htaccess nutzen, um ein paar Dateien nach einem bestimmten Dateimuster in UTF-8 auszugeben, während die Standardkodierung (z.B. iso-8859-15) für die restlichen Seiten verwendet wird:

<FilesMatch "^seite-irgendwas-.*\.html$">AddDefaultCharset UTF-8</FilesMatch>

Mit obigem Muster werden alle Seiten, welche mit seite-irgendwas- beginnen und mit .html enden, in UTF-8 Charset ausgeliefert.

Man sieht, die FilesMatch und AddDefaultCharset Anweisungen lassen sich prima kombinieren, um statische Webseiten ohne Hilfe von PHP mit dem richtigen Zeichensatz zum Browser zu senden. Damit kann man garantieren, dass die Sonderzeichen für die entsprechenden Charsets auch korrekt ausgegeben werden.