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就会直接支持中文查找和排序了。
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就会直接支持中文查找和排序了。
[mysqld]
......
default-character-set=gbk
也可以
并且在自己不能管理这些文件时就做不到了,
其实把要排序的字段加上binary属性就可以了
default-character-set=gbk
character_set=gbk
就可以完全支持中文,能够正确排序
我建了一个表
字段为
ch char(20)
没有设为binary
我输入你的数据
select * from a order by ch
结果是ch
化学、资环
教育技术
历史
数学、计算机
体育
外语
物理
艺术
政法经济
中文结果完全正确,和access中排出来的一模一样
我的系统 是winxp+mysql4.0.2,欢迎交流