Kategorie: Linux
UTF8-Probleme in mysql-Datenbanken
Beim Import einer Datenbank, die auf einem anderen Server exportiert wurde kann es zu Problemen mit den UTF8-Zeichen kommen.
Beim Import einer Datenbank, die auf einem anderen Server exportiert wurde kann es zu Problemen mit den UTF8-Zeichen kommen.
Besonders ärgerlich ist, wenn die einzelnen Bytes eines UTF8-Zeichens fälschlicherweise beim Export selbst in UTF8 konvertiert wurden. Dann hat man Quargel wie ü statt den Umlauten dort stehen. Da nutzen auch keine Tools wie iconv mehr etwas, weil der Text eigentlich schon in perfektem UTF8 vorliegt. Nur halt mit kryptischen Zeichen statt Umlauten.
Da hilft ein kleines Skript, das das Tool "sed", das auf jedem Linuxsystem vorinstalliert sein sollte, verwendet:
#!/bin/bash
sed -i 's/Ä/Ä/g' $1
sed -i 's/ä/ä/g' $1
sed -i 's/Ö/Ö/g' $1
sed -i 's/ö/ö/g' $1
sed -i 's/Ãœ/Ü/g' $1
sed -i 's/ü/ü/g' $1
sed -i 's/ß/ß/g' $1
Aufgerufen mit
./scriptname dateiname
kann das mit mysqldump exportierte File korrigiert und mit dem mysql-Befehl wieder importiert werden. Wahlweise können auch andere Sonderzeichen-Ersetzungen im Skript hinzugefügt werden.