Von ISO-8859-1 zu UTF-8 in PHP und MySQL

Da ich grade eben selbst ein paar Probleme bei der Konvertierung einer Webanwendung von ISO-8859-1 auf UTF-8 hatte, hab ich mir gedacht, ich stell meine Erfahrungen mal dar und erläutere meinen Lösungsansatz.

Ausgangssituation ist eine dynamische Website, deren (X)HTML und Datenbankinhalte mit ISO-8859-1 kodiert sind - wir wollen, dass das Ganze möglichst unkompliziert und schnell UTF-8 fähig wird, ich hab es folgendermaßen gemacht:

  1. Backup-Dump der Datenbank ziehen (selbstverständlich…)
  2. Die Kollation der Datenbank und der einzelnen Tabellen auf `utf8_unicode_ci` setzen
  3. Die betroffenen Datenbank-Inhalte (Textfelder) in UTF-8 konvertieren (siehe Converter Script)
  4. Die (X)HTML-Dateien UTF-8-kodiert speichern
  5. Die Ausgabe im Frontend auf UTF-8 umstellen - entweder per PHP-Header oder Meta-Tag

Converter Script

Für die eigentliche Arbeit des Konvertierens der DB-Inhalte hab ich ein kleines Script geschrieben, welches ich hier auch zur Verfügung stellen wollte: DB Convert.

Das Script ist eher quick and dirty und braucht eine SQL-Klasse die ich immer für MySQL-Datenbankzugriffe benutze (ist beigelegt) - falls Fragen dazu sind, postet diese bitte in den Kommentaren, falls Bedarf sein sollte, kann ich das Script auch noch ein wenig mehr dokumentieren.

Probleme mit phpMyAdmin

Anfängliche Verständnisschwierigkeiten hat mir phpMyAdmin bereitet. Dort werden scheinbar - obwohl die Zeichenkodierung UTF-8 ist - die konvertierten Zeichen (bspw. Umlaute) sehr wirr angezeigt, die letztendliche Ausgabe auf der Seite stimmt dann allerdings und ist UTF-8. Falls jemand sachdienliche Hinweise dazu hat, postet es bitte in den Kommentaren.

Edit: Ich hab grade noch einen Artikel von O’Reilly zu diesem Thema gefunden.

iOS app for GitHub

iOctocat

ist GitHub für die Hosentasche - deine Projekte und das was dort passiert immer dabei mit deinem iPhone und iPod Touch.
Die App ist