. 方法1  在MySQL中,进行中文排序和查找的时候,对汉字的排序和查找结果是错误的。这种情况在MySQL的很多版本中都存在。如果这个问题不解决,那么MySQL将无法实际处理中文。  出现这个问题的原因是:MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象,一种解决方法是对于包含中文的字段加上"binary"属性,使之作为二进制比较,例如将"name char(10)"改成"name char(10)binary"。二. 方法2   如果你使用源码编译MySQL,可以编译MySQL时使用--with--charset=gbk 参数,这样MySQL就会直接支持中文查找和排序了。

解决方案 »

  1.   

    不,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
    前就会有你所说的问题。
      

  2.   

    这个问题我也遇到了,我用winmysqladmin查看variables,发现charcter_set为gbk,可是我执行下面的语句
    select department
           from class group by department order by department
    仍然返回了错误的排序:
    历史
    数学、计算机
    外语
    物理
    体育
    艺术
    政法经济
    中文
    化学、资环
    教育技术
      

  3.   

    知道原因了:只设置default-character-set=gbk是不行的,还必须设置字段为binary属性
      

  4.   

    darzui(牛肉饭),不对啊,我的是设置my.ini中的
    default-character-set=gbk
    character_set=gbk
    我建了一个表
    字段为
    ch char(20)
    没有设为binary
    我输入你的数据
    select * from a order by ch
    结果是ch
    化学、资环
    教育技术
    历史
    数学、计算机
    体育
    外语
    物理
    艺术
    政法经济
    中文结果完全正确,和access中排出来的一模一样.是不是你没有设置
    character_set=gbk
      

  5.   

    我设置了character_set=gbk,mysql就不能启动了,出错信息为
    mysqld-nt: unrecognized option `--character_set=gbk'
      

  6.   

    你的mysql版是多少 ?
    把gbk改为gb2312试试,如果有mysqld-max.exe或mysqld-max-nt.exe,用它来启动mysql数据库,而不要用mysqld.exe