最近几天用mysql5.0.27数据库出现了很多次中文乱码问题。
特别是昨天,不小心把整个数据库数据全部搞成乱码了,郁闷了好半天,终于恢复了。
数据库:mysql5.0.27
界面工具一:SQLyog Enterprise v5.19
界面工具二:MySQL-Front v3.2.14.3
编辑工具:UltraEdit-32
问题描述
安装mysql时设置默认编码为gbk,使用[工具一]连接,连接编码为gbk,建表录入数据正常。
需求在其它机器上新建相同数据库,使用[工具一]生成.sql备份文件,用同样[工具一]在其它机器上导入该.sql文件,出现乱码。
如果是导入文件执行会经常出现错误(不明原因),需要把代码拷贝到编辑区执行。注意,导出文件的编码格式为utf-8的,直接拷代码会拷不进去,这时需要用UE32转换编码为ASC2码才能拷入。执行成功,但显示会出现乱码。
解决方法
将mysql默认编码改为utf-8,数据库默认编码最好设为utf-8,以后安装的时候都用它就行了。使用[工具二]连接,连接编码为gbk,同样把转过的ASC2编码的代码拷入sql编辑区,执行,成功。后面把[工具二]的连接改为gbk或者utf-8,都会显示正常。
总结
主要原因是将数据库设为了gbk的后,导出备份文件时将文件中代码的编码设成了utf-8的,表里的一些备注等中文信息则会变成乱码,直接用文件导入时会报错,后转换编码搞乱了。
试验了一下,使用[工具一]将导出的utf-8文件转码成ASC2后再拷入编辑区执行是不可行的(两种连接utf-8,gbk都会产生乱码)。所以使用[工具一]最好是直接导入utf-8编码的.sql文件。不要把代码转码后拷入执行。如果导入执行报错,找到错误信息,修改。修改不了就使用[工具二],[工具一]生成的.sql文件语法[工具二]可以使用。
然后又试验了[工具二],这个工具须将编码转换成ASC2后打开(不然会在编辑区就看到乱码)连接须设置为gbk,其它情况都会报sql错误。
posted on 2007-03-03 15:55
小祝 阅读(1430)
评论(11) 编辑 收藏 所属分类:
数据库