很早以前就在某些网页上看到过MySQL 4.1对于中文支持不够,但是后来也曾经在4.0版本上开发过一些WEB应用,没有遇到过这个问题,没想到昨天自己安装MySQL居然遇到了中文乱码的问题。
[服务无法启动]
MySQL安装初期一直正常,但是在最后一步的时候一直提示无法启动服务,经检查发现MySQL这个服务已经存在,但是却没有启动路径,反复使用安装和卸载命令,无法将该服务配置好,最后打开注册表编辑器,删除掉键值仍然没有效果。实在不行只好重新换了个MySQL41的服务名,才成功启动。
最郁闷的是,win2000居然无法通过控制面板删除指定的服务,必须自己写个删除的程序才能解决。
[中文乱码解决方案]
然后就是非常郁闷的中文问题了,我安装了2个辅助工具,都是官方站点下载的(MySQL Administrator和MySQL Query Browser),在MySQL安装完毕后进行操作,发现编辑任何表的某一数据行都仍然是乱码,在网上找了很多相关的资料。
第一步以为my.ini文件缺失,然后在[%system%]目录下新建了my.ini文件,内容如下:[WinMySQLAdmin]
Server=C:/Program Files/mysql/bin/mysqld-nt.exe
[mysqld]
basedir=c:/Program Files/mysql
datadir=c:/Program Files/mysql/data
default-character-set=gbk
[client]
default-character-set=gbk
第二步,发现建立后重启机器仍然没有效果,然后找到其他的资料:
可以不需要修改my.ini。
在建立数据库的时候,对库和表的字符集设置不太重要,但是对文本类型的字段最好都设置为GBK字符集。
对于已有的数据库可以用以下方法转换字段编码:
ALTER TABLE t MODIFY hoverfly BINARY(100);
ALTER TABLE t MODIFY hoverfly CHAR(100) CHARACTER SET gbk;
注意用此方法如果不修改程序,会发现查询出的结果都是乱码,可以通过在my.ini的[mysqld]段内加default-character-set=gbk来纠正。但是这样你会发现那些没有转换编码的文本字段里的中文都是乱码。
其实有更简单的办法,在进行查询前,只要执行SET character_set_results = NULL就可以。而且这是不管是转换了的还是没转换的字段都不会出现乱码。而转换了的字段可以正常的对中文进行排序。
第三步,还是不行,找了其他的资料:
在my.ini中的两处加入,分别是[mysqld]和[*client]处
default-character-set=gb2312 ,reboot机器(重要)。
在网页中就可以访问了,注意使用可视工具的来维护mysql的,
可能由于不支持中文的编码,插入中文数据后,仍然是乱码。
使用命令行的应该可以了。
最后,找到一个说明,是关于字段设置的,原来MySQL的字段还有字符集设置........汗,修改中文字段的字符集为GBK后,一切正常。