MySQL增加了编码的支持所以在转换旧数据的时候稍微麻烦一些但只要注意以下几点基本没问题的
转换之前一定要先把原有数据dump出来一般原有数据都是gb编码吧dump命令如下
MySQLdumpupdatabase–adddroptable–extendedinsert
–adddroptable是为了导入的时候省去建表环节–extendedinsert是为了防止在导入的时候一个sql语句过大的情况想想你的上千条记录写在一条sql语句中是多么的恐怖
这里假定原有数据库是gb编码需要转换为utf编码其它编码之间的转换类似
修改dump出来的sql文件用Emeditor或iconv把文件的编码转换为utf注意最好不要那个什么Unicode Signature(BOM)因为MySQLexe不认的再把文件中的gbk_bin替换为utf_general_ci把gbk替换为 utf然后在文件最前面加上
setnamesutf;
带上BOMMySQL不识别的错误大体如下
ERROR()atline:
YouhaveanerrorinyourSQLsyntax;
checkthemanualthatcorrespondstoyour
MySQLserverversionfortherightsyntaxtousenear???
/*!SET@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT*/atline
重新建MySQL库然后导入备份的sql语句导入命令如下
mysqlupdatabase<dumpdatasql
如果是以前导出的文件导入的时候遇到错误
Gotapacketbiggerthanmax_allowed_packetbytesor
ERROR(S)atline:Gotapacketbiggerthan
max_allowed_packetbytes
就需要修改MySQL的最大允许包大小了编辑myini在[MySQLd]部分(不在这部分没用)添加一句
setvariable=max_allowed_packet=
重启MySQL服务就可以了我这里设置的是大约MB
到这里数据导入基本就完成了接下来就是根据各个应用的不同来调整了一般有的系统已经支持了但还有的不支持不过调整方法大概分以下几类
在数据库连接后面加上
mysql_connect(…
mysql_query(setnamesutf′);
这种情况最多比如Brim什么的
将语言文件或模板文件的编码设置为utf注意是直接把文件编码转换了就可以内容不用管这样的有phpwind mantis使用工具可以是iconv
修改模板文件设置HTML中的
<meta httpequiv=ContentType content=text/html;charset=UTF />
原先是gb编码的系统多半需要改这个