最近在用mysqldump导一个数据库的时候发现,原来的库是latin1的,新库为utf8的,导完了以后,发现结果是乱码的。
最后根据编码规则,用以下办法来解决乱码问题。
第一步,导出旧库
mysqldump --default-character-set latin1 -uroot -pXXX --database db > /tmp/old.sql
第二步,转换编码(只有linux或unix上有这个命令)
iconv -t utf-8 -f gb2312 -c /tmp/old.sql > /tmp/new.sql
第三步,导入新库
修改new.sql,增加一条sql语句: "SET NAMES utf8;",再将里面所有的CHARSET=latin1改成CHARSET=utf8,保存。
mysql -hlocalhost -uroot db < new.sql