nginx: Wie ändere ich das Encoding/das Charset einer Seite?

Dateiencoding ist ein großes Problem für viele Webseiten, in vielen Fällen ist die MySQL-Datenbank so konfiguriert, daß sie die Latin-1-Kodierung anstelle des vorherrschenden Standards UTF-8 benutzt. nginx bietet eine einfache Lösung für die Umstellung Ihrer Webseiten-Kodierung, so dass Ihre Besucher nicht mit unlesbaren Zeichen auf Ihrer Webseite konfrontiert werden.

Alles, was Sie benötigen, ist die charset-Direktive. Wenn Sie möchten, daß Ihre Seite mit ISO-8859-1-Kodierung ausgegeben wird, geben Sie an:

charset iso-8859-1;

Für UTF-8 geben Sie an:

charset utf-8;

Die charset-Direktive fügt lediglich das entsprechende Charset zum "Content-Type"-Header hinzu, führt aber keine Konvertierung des Charsets durch (wenn der Content in dem Charset vorliegt, der in der charset-Direktive angegeben ist, reicht dies aus, um den Content im Browser korrekt anzuzeigen). Die charset-Direktive kann in http {}, server {} und location {} Blöcken auftauchen sowie in if-Statements innerhalb eines location {} Blockes.

Wenn Sie eine Konvertierung wünschen, der Content also in einem Charset vorliegt und Sie ihn in ein anderes Charset umwandeln möchten, fügen Sie die source_charset-Direktive hinzu:

charset utf-8;
source_charset koi8-r;

Wenn es schon ein Charset im "Content-Type"-Header gibt, z.B. aus der Antwort eines FastCGI- oder Proxy-Servers, fügen Sie noch die Direktive

override_charset on;

hinzu, um das vorhandene Charset im "Content-Type"-Header zu ersetzen:

charset utf-8;
source_charset koi8-r;
override_charset on;

Vergessen Sie nicht, nginx nach Ihren Änderungen neu zu laden:

/etc/init.d/nginx reload

Nach oben