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

解决方案 »

  1.   

    my.ini里面加上
    [mysqld]
    ......
    default-character-set=gbk
    也可以
      

  2.   

    其实以上的方法都不是很容易,
    并且在自己不能管理这些文件时就做不到了,
    其实把要排序的字段加上binary属性就可以了
      

  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中排出来的一模一样
    我的系统 是winxp+mysql4.0.2,欢迎交流