Hetzner - DokuWiki

Utf-8

UTF-8 ist die am meisten verbreitete Kodierung für UNICODE-Zeichen. Die Abkürzung UTF-8 steht für Unicode Transformation Format und sollte auf allen Servern als Standard konfiguriert sein. Wenn dies nicht der Fall ist, so kann man dies mit dieser Anleitung ändern.

Inhaltsverzeichnis

Putty konfigurieren

Leute die noch mit Windows arbeiten müssen verwenden meistens Putty um auf ihren Linux-Server zuzugreifen. Wenn der Server auf UTF-8 läuft muss man Putty aber auch dazu bringen UTF-8 zu verwenden, da sonst Sonderzeichen falsch dargestellt werden, obwohl die Files am Server richtig gespeichert sind.

Putty zu konfigurieren ist etwas schwieriger, da diese Funktion noch nicht ganz wie gewünscht funktioniert. Es geht nur mit einem Trick. Bei diesem Trick ist die Reihenfolge sehr wichtig:

  1. Starten Sie Putty.
  2. Tragen Sie die IP des Servers ein und geben Sie dem ganzen einen Namen. 
  3. Speichern Sie den Server in ihre "Saved Sessions".
  4. Klicken Sie auf Load um ihre Session zu laden.
  5. Wählen Sie im Dialog Window/Translation den richtigen Zeichensatz aus.
  6. Speichern Sie die Session.
  7. Öffnen Sie diese Session und es wird funktionieren.

LAMP Server umkonfigurieren

Es folgt eine kleine Anleitung zum Konfigurieren von UTF-8 auf einem Linux-Server (DEBIAN).

Linux (Bash)

Mit dem Befehl locale kann man Prüfen welcher Zeichensatz gerade am System aktiv ist. Die Ausgabe sollte so aussehen:

crystal-glass:~# locale
LANG=de_AT.UTF-8
LC_CTYPE="de_AT.UTF-8"
LC_NUMERIC="de_AT.UTF-8"
LC_TIME="de_AT.UTF-8"
LC_COLLATE="de_AT.UTF-8"
LC_MONETARY="de_AT.UTF-8"
LC_MESSAGES="de_AT.UTF-8"
LC_PAPER="de_AT.UTF-8"
LC_NAME="de_AT.UTF-8"
LC_ADDRESS="de_AT.UTF-8"
LC_TELEPHONE="de_AT.UTF-8"
LC_MEASUREMENT="de_AT.UTF-8"
LC_IDENTIFICATION="de_AT.UTF-8"
LC_ALL=

Wenn dies nicht der Fall ist kann man mit folgendem Befehl die Zeichensätze konfigurieren: dpkg-reconfigure locales. Es folgt ein einfacher Dialog in dem die Zeichensätze ausgewählt werden müssen. Nach einem erneuten Anmelden werden die Änderungen übernommen.

Apache2

Apache liefert die HTML-Dokumente standardmäßig nicht in UTF-8 aus, damit dies geschieht muss man in der Datei /etc/apache2/apache2.conf folgende Änderung vornehmen:

AddDefaultCharset utf-8

Damit die Änderungen übernommen werden muss Apache2 neu gestartet werden, dies geht mit folgendem Befehl: /etc/init.d/apache2 restart

PHP5

PHP selbst arbeitet meistens mit den Zeichensatz-Vorgaben des Betriebssystems. Jedoch ist es von Vorteil PHP5 dazu zu zwingen, explizit UTF-8 zu verwenden. Dazu muss folgende Datei editiert werden: /etc/php5/apache2/php.ini Dort gibt es verschiedene Abschnitte. In diesen einzelnen Abschnitten müssen folgende Änderungen gemacht werden:

[PHP]
default_charset = “utf-8″
[mbstring]
mbstring.language = utf-8
mbstring.internal_encoding = utf-8
mbstring.http_input = utf-8
mbstring.http_output = utf-8

Wichtig ist dabei, dass die Einträge nicht einfach hineinkopiert werden, da ein paar davon bereits vorhanden sind. Deshalb müssen die bestehenden Einträge ersetzt werden. Damit die Änderungen übernommen werden muss der Webserver (Apache2) neu gestartet werden. Dies geschieht mit folgendem Befehl: /etc/init.d/apache2 restart.

MySQL5

MySQL hat 2 verschiedene Zeichensätze. Einmal den der Datenbank/Tabelle und andererseits den internen Zeichensatz für die Verarbeitung. Am besten ist es auch in diesem Fall alles auf UTF-8 zu stellen. Möchte man dies tun, so muss diese Datei bearbeitet werden: /etc/mysql/my.cnf Es gibt auch in diesem Fall wieder mehrere Blöcke in dem config-File. Daher ist drauf zu achten, dass die richtige Anweisung in den richtigen Block geschrieben wird. Es müssen folgende Dinge geändert werden:

[client]
default-character-set = utf8
[mysqld]
default-character-set = utf8
character-set-server = utf8
collation-server = utf8_general_ci
init_connect = 'SET collation_connection = utf8_general_ci'
init_connect = 'SET NAMES utf8'
[mysqldump]
default-character-set = utf8
[mysqlimport]
default-character-set = utf8
[mysql]
default-character-set = utf8

Damit die Änderungen übernommen werden muss der MySQL-Server einmal neu gestartet werden. Das geschieht mit folgendem Befehl: /etc/init.d/mysql restart.

Anmerkung: Wenn Putty (oderer anderer SSH Client) nicht mit UTF-8 arbeiten wird das ''bei init_connect = 'SET NAMES utf8' falsch übertragen und es kommt beim starten zu einer Fehlermeldung.

weitere Links / Quellenangaben

UNICODE bei Wikipedia

wiki.debianforum.de/DebianAufUtf8Umstellen

www.xaranetblog.de/2008/08/02/apache-php-und-mysql-auf-utf-8-umstellen/



© 2019. Hetzner Online GmbH. Alle Rechte vorbehalten.