Folgende Vorgehensweise kann genutzt werden, wenn die Datenbank ein Mix aus UTF-8 und Latin1 Daten enthält.
1. Datenbank exportieren als latin1 und danach prüfen, ob es irgendwo Codierungsfehler gibt
mysqldump --opt --default-character-set=latin1 --skip-extended-insert db_name -r db_name_latin.sql -u username -p
2. Datenbank per iconv konvertieren
iconv -f UTF-8 -t UTF-8 -c db_name_latin.sql > db_name_utf8.sql
3. In Datenbank per sed latin1 Einträge durch utf8 ersetzen
sed -e's/latin1/utf8/g' db_name_utf8.sql > db_name_utf8_fixed.sql
4. Datenbank wieder importieren
mysql --default-character-set=utf8 db_name < db_name_utf8_fixed.sql -u username -p
Der Import der konvertierten Daten kann etwas länger dauern.
Anmerkungen:
Falls die Umlaute später fehlen, dann Schritt 2 mit -f LATIN1 ausführen
Links
Original Artikel: http://joemaller.com/1328/