Changer l'encodage d'une base de données MySQL
On avait un site multilingue dont l'affichage en russe déconnait, la faute à notre base de données qui était en latin1.
Voici la procédure utilisée pour tout nettoyer comme il faut et convertir en utf8.
Backup de la base
mysqldump -uusername -ppassword -c -e --default-character-set=utf8 --single-transaction --skip-set-charset --add-drop-database -B dbname > dump.sql cp dump.sql dump-fixed.sql vi dump-fixed.sql
Rechercher / remplacer dans le fichier ouvert dans vi
:%s/DEFAULT CHARACTER SET latin1/DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci/ :%s/DEFAULT CHARSET=latin1/DEFAULT CHARSET=utf8/ :wq
Suppression de la base de données et recréation en utf8
DROP DATABASE dbname; CREATE DATABASE dbname DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Réimport de la base au format utf8
mysql -uusername -ppassword --default-character-set=utf8 dbname< dump-fixed.sql