. 方法1 在MySQL中,进行中文排序和查找的时候,对汉字的排序和查找结果是错误的。这种情况在MySQL的很多版本中都存在。如果这个问题不解决,那么MySQL将无法实际处理中文。 出现这个问题的原因是:MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象,一种解决方法是对于包含中文的字段加上"binary"属性,使之作为二进制比较,例如将"name char(10)"改成"name char(10)binary"。二. 方法2 如果你使用源码编译MySQL,可以编译MySQL时使用--with--charset=gbk 参数,这样MySQL就会直接支持中文查找和排序了。
楼主贴出来的排序本身就是错误的,应该是
A
啊
B
萡(bo)
不(bu)
O
哦设置my.ini中的
default-character-set=gbk
character_set=gbk你再执行select * from drug order by cn_name;看看?(惊喜吧)
我的是winxp+mysql4.0.2,对中文支持很好。没有设置my.ini中的
default-character-set=gbk
character_set=gbk
前就会有你所说的问题。
select department
from class group by department order by department
仍然返回了错误的排序:
历史
数学、计算机
外语
物理
体育
艺术
政法经济
中文
化学、资环
教育技术
default-character-set=gbk
character_set=gbk
我建了一个表
字段为
ch char(20)
没有设为binary
我输入你的数据
select * from a order by ch
结果是ch
化学、资环
教育技术
历史
数学、计算机
体育
外语
物理
艺术
政法经济
中文结果完全正确,和access中排出来的一模一样.是不是你没有设置
character_set=gbk
mysqld-nt: unrecognized option `--character_set=gbk'
把gbk改为gb2312试试,如果有mysqld-max.exe或mysqld-max-nt.exe,用它来启动mysql数据库,而不要用mysqld.exe