Umstieg von MySQL 4 auf MySQL 5 und UTF-8 Probleme

Ich habe eben meine ersten bemühungen unternommen meine MySQL-Datenbanken von Version 4.0 auf 5.1 zu upgraden.
Leidiges Problem hierbei ist vermutlich die Kovertierung der gesamten Datenbank in das UTF-8 Zeichensatz-Format, welches das Default Format bei meinem MySQl 5.1 Server ist.

Hier also eine Beschreibung wie man den Umstieg am besten hin bekommt.

1. Einen Dump der Datenbnak erstellen

1
Linux-Test:/srv/mysql/bin# ./mysqldump -uroot -pPASSWD -vv --allow-keywords MYSQLDB > mysqldb.sql

2. Prüfen in welchem Format diese Datei ausgegeben wurde:

1
2
Linux-Test:/srv/mysql/bin# file mysqldb.sql
mysqldb.sql: ISO-8859 English text, with very long lines

Hier sieht man, dass der Zeichensatz ISO-8859 ist, mit anderen worten: Latin1 (Welcher der standard bei MySQL 4.0 ist).
Da wir nun einen MySQL 5.1 Server betreiben, welcher als Standard UTF-8 benutzt, müssen wir die Dump-Datei zu dem neuen Zeichensatz konvertieren.

3. Den Dump der Datenbank von Latin1 (ISO) nach UTF-8 konvertieren:

1
Linux-Test:/srv/mysql/bin# iconv --from-code=ISO-8859-15 --to-code=UTF-8 mysqldb.sql > mysqldb-utf8.sql

4. Noch einmal prüfen in welchem Zeichensatz die neue Datei nun geschrieben wurde:

1
2
Linux-Test:/srv/mysql/bin# file mysqldb-utf8.sql
mysqldb-utf8.sql: UTF-8 Unicode English text, with very long lines

Damit wäre der MySQL-Dump schon mal in den UTF-8 Zeichensatz konvertiert.
Diesen Dump können wir jetzt in den MySQL 5.1 Server einlesen.

1
Linux-Test:/srv/mysql/bin# mysql -uroot -pPASSWD mysqldb <  mysqldb-utf8.sql

Im phpMyAdmin kann man die Datenbnak nun aufrufen und alle Zeichensätze werden korrekt angezeigt 🙂

So…
Damit die Umlaute auch korrekt in den Selbst Programmierten Seiten angezeigt werden braucht es folgende Einstellung in dem Apache:

1
2
3
4
5
6
7
8
9
    AddType application/x-httpd-php;charset=utf-8 .php
    AddType application/x-httpd-php-source;charset=utf-8 .phps
    #Für Cascading Style Sheets
    AddType text/css;charset=utf-8 .css
    #Für HTML Dokumente
    AddType text/html;charset=utf-8 .html .htm
    #Für XHTML Dokumente
    AddType application/xhtml+xml;charset=utf-8 .xhtml
    AddDefaultCharset utf-8

Und diese Einstellung in der php.ini:

1
default_charset = "utf-8"

Damit haben wir nun sowohl php, als auch dem Apache gesagt das er sämtliche Seiten standardmässig im UTF-8 Zeichensatz ausgeben soll.

Als letztes haben wir nun nur noch ein Problem mit dem Zeichensatz in den PHP-Dateien Selbst.
Wenn wir jetzt eine Datei mit dem Zeichensatz „iso-8859-1“ (Windows Standard) angelegt haben, dem Apache aber sagen er soll sie als UTF-8 ausliefern und in dieser Datei Umlaute verwenden, so sieht das so aus:

1
ABC - ��

Wird diese Datei nun im UTF-8 Format abgespeichert, so werden diese Umlaute auch korrekt angezeigt.

1
ABC - ÖÄÜ

Ja.. Damit kann man nun auch MySQL 5.1 incl. UTF-8 mit Sonderzeichen und Umlauten benutzen 🙂

2 Responses to Umstieg von MySQL 4 auf MySQL 5 und UTF-8 Probleme

  1.  

    Hi Sven,

    vielen Dank, war sehr infomativ, leider habe ich das Problem, dass die code page meiner mySQL-DB nicht angezeigt wird („non ISO extended ASCII“), habe ein paar code pages, die mir plausibel erschienen, versucht, das Ergebnis war immer dasselbe: die Umlaute waren vermurxt…

    Wenn Dir noch was Schlaues dazu einfällt, dann wäre das super!

    Schöne Grüße

    Karl

  2.  

leave your comment

*

Unterstütze den Frickelblog!