Der Weg nach utf8

Wie letztens geschrieben, hier mein Weg um die Datenbank auf utf8 umzustellen, falls man beim php/mysql Wechsel versehentlich seine Umlaute & Co geschrottet hat. So wie ich, habe ich doch alle Umlaute doppelt utf8 kodiert (siehe Screenshot am Ende). Voraussetzung ist eine Shell und phpMyAdmin. SQL-Profis brauchen letzteres natürlich nicht, aber die haben auch keine utf8-Problemchen.

  1. Backup! Backup! Backup!
    Am besten gleich eine Kopie mit phpMyAdmin anlegen und diese sichern!
  2. Ich habe zuerst die Kollation der Datenbank auf utf8_bin umgestellt.
  3. Dann habe ich über die Shell einen Dump der Datenbank angelegt, wichtig ist hierbei der default charset latin1 gewesen!:
    mysqldump -uuser -ppasswort datenbankname --default-character-set=latin1 > /tmp/dumpname
  4. Mit einem Hex-Viewer wie zum Beispiel xxd sollte man dann mal einen Blick auf den Dump werfen und sich einen kaputten Umlaut suchen. In meinem Fall belegten die doppelt utf8 kodierten Zeichen 3 bis 4 Bytes statt 2 Bytes.
  5. Nun editiert man mit vim den Dump und ändert ganz am Anfang des SQL das "SET NAMES latin1" auf "SET NAMES utf8".
  6. In phpMyAdmin sollte man nun die alte Datenbank einfach umbenennen (ist gleich ein Backup), eine neue Datenbank mit dem gleichen Namen anlegen und dann auf der Shell den Dump wieder einlesen:
    mysql -uuser -ppasswort datenbankname < /tmp/dumpname
  7. Zu guter Letzt habe ich in Handarbeit via phpMyAdmin sämtliche Kollationen auf utf8_general_ci umgestellt, also bei allen Tabellen und allen Felder!
  8. Nicht zu vergessen ist der Eintrag DB_CHARSET in eurer wp-config.php, dort gehört "utf8" eingeragen!

Was bei mir nicht klappte, war ein Tipp von David den Dump einfach mit default charset --default-character-set=utf8 einzulesen, ich glaube das funktioniert nur wenn die eigentlichen Daten eh schon utf8 sind, aber noch in einer Datenbank mit falschen Charset liegen. Darum auch der Hinweis, den Dump mal mit xxd zu betrachten.

Nicht empfehlen kann ich das Vorgehen von Perun oder kONZENTRAT.org die Zeichen per Suchen und Ersetzen auszutauschen, da sich die kaputten Zeichen u.U. nicht auf die drei Umlaute und ein scharfes S begrenzen. Ansonsten hat er es wie David mir sagte gemacht und den falschen Charset korrigiert.

Es wird aber trotzdem andere und eventuell auch bessere, einfachere und/oder schnellere Wege geben, was zählt ist aber das Endergebnis! Wie sagt mein Hausarzt immer so schön: "Wer heilt, hat Recht!"

utf8

Dieser Beitrag wurde unter Green Smilies intern, WordPress abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

4 Kommentare zu Der Weg nach utf8

  1. Ray sagt:

    DA hättest Du einfach den DUK nehmen können.

  2. Michael sagt:

    @Ray: Der DUK ersetzt nur Zeichen und wenn ich richtig gelesen habe, hat er mit manchen noch Probleme, z.B. dem Euro-Symbol. Meine Variante ersetzt nichts gezielt, sondern wandelt alles um.

  3. Oliver sagt:

    Cooler Blog , gefälllt mir :bravo:

  4. Lisa sagt:

    Danke, hatte selbst Probleme! Der Weg von dir ist zwar nicht ganz easy, aber wenigstens hats geklappt. Danke!

Kommentare sind geschlossen.