我之前的数据库编码是默认的LATIN1
,但是想转换为UTF8
,baidu、google了半天,方法有很多,可是许多方法要么就是特别麻烦,要么就是根本无效果
。
查了半天,也测试了半天,终于搞定了,下面将步骤写一下
测试环境:WINDOW 7 32位Service Pack 1
Mysql版本:5.5.15,安装在D:My
SQL5目录下
。
1.由于我的虚拟
空间提供商只提供用My
SQL 4.0备份的数据库文件,MySQL 4.0x系列只支持LATIN1编码,首先需要修改此文件,将文件中每一个Create Table项里的TYPE=MyISAM替换成ENGINE=MyISAM,这一点非常重要。
2.修改D:my.ini,将[
mysql]区段中的default-character-set=xxx改成default-character- set=latin1,将[
mysqld]区段中的character-set-server=xxx改成character-set- server=latin1,然后重启数据库。
3.用缺省字符集创建一个数据库(现在的缺省字符集应该是latin1,你也可以使用show variables like ‘character%’去查看现在数据库的字符集),并执行mysql –u root –p <Database Name> < sql文件名将mysql 4.0x导出的数据导入到数据库中(这个步骤是一定不能省滴,切记!)。
4.用5.5的mysqldump导出数据:
mysqldump -uroot -p --compatible=mysql40 --default-character-set=latin1 test > test.sql
test是你想导出数据的数据库名,test..sql是随意命名的文件,名称随意。
程序会提示你输入root的用户密码(如果存在密码的话),输入,程序开始导出。
重点:--compatible=mysql40 --default-character-set=latin1,当指定了--compatible=mysql40参数后,可以指定数据库编码
5.通过MySQL-Front建立一个新库,库名:test,采集字符集设为utf8,COLLATE设为utf8-general-ci(也可以在 MySQL控制台下键入create database test default character set utf8 collate utf8_general_ci; 创建)。然后将导出的test.sql转换为UTF-8编码,我用的是
linux下的iconv命令。
6. .修改D:my.ini,将[mysql]区段中的default-character-set=xxx改成default-character- set=utf8,将[mysqld]区段中的character-set-server=xxx改成character-set- server=utf8,然后重启数据库。
7.将备份出来的sql文件导入新数据库(别忘记把TYPE=MyISAM替换成ENGINE=MyISAM)。
mysql –u root -p --default-character-set=utf8 test < /test.sql
完成。。。
打开MySQL-Front,以UTF8编码登录,看看是不是可以看到可爱的汉字了。
如果导入数据时报“MySQL server has gone away”,可以修改my.ini的[mysqld]区段,加入max_allowed_packet = 10M,然后重启数据库即可。