第一步,导出旧库
mysqldump --default-character-set latin1 -uroot -pXXX --database db > /tmp/old.sql
第二步,转换编码
iconv -t utf-8 -f gb2312 -c /tmp/old.sql > /tmp/new.sql
第三步,导入新库
修改new.sql,增加一条sql语句: "SET NAMES utf8;",保存。
mysql -hlocalhost -uroot db < new.sql
来自:PHP高级技术群 8745758
Gbk编码导出这个Mysql的注释也就对了:
view plaincopy to clipboardprint?
1.mysqldump --default-character-set gbk -d db_adc t_tst_sum_info > /tmp/old.sql
而存入的时候是:
要想显示 正常,需要在Mysql Client输入:
1.set names latin1;
再select数据也就正常了。是表存的内容是latin1,而这个表结构的注释是gbk编码的,所以这块还是多少有一些问题;
证明:
1,只导出数据:
mysqldump --default-character-set gbk -t db_adc t_tst_sum_info > /tmp/old.sql 理论是乱码,实践出也是乱码。
mysqldump --default-character-set latin1 -t db_adc t_tst_sum_info > /tmp/old.sql 理论上是正常,实践也是正常。
充分说明这个表的结构注释和表内容是不一样的,要想一样,得统一为lation,或者gbk,但历史原因都是lation,所以,统一为lation较好。
最后:尽管说明这样两种编码是可以的,但是还是可以统一为lation的,线上我也就发现是可以的。