Datenbank zu UTF8 konvertieren

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/

Tags