爱心技术专栏专题

MySQL中文排序错误的解决方法

摘录:Mysql教程 来源:Mysql教程 加入时间:2007年03月19日
摘要:
MySQL中文排序错误的解决方法


 
作者: 奥索网  评价:  上站日期: 2001-12-29  
--------------------------------------------------------------------------------
<…

转载:转载请保留本信息,本文来自
http://www.51dibs.com
/html/2006/article/info22/a_a52add9da721eb0d.htm

MySQL中文排序错误的解决方法

站点:爱心种子小博士 关键字:MySQL中文排序错误的解决方法

   
MySQL中文排序错误的解决方法

MySQL中文排序错误的解决方法 
作者: 奥索网  评价:  上站日期: 2001-12-29  
--------------------------------------------------------------------------------

  在MySQL中,进行中文排序和查找的时候,对汉字的排序和查找结果是错误的。这种情况在MySQL的很多版本中都存在。如果这个问题不解决,那么MySQL将无法实际处理中文。

  出现这个问题的原因是:MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象,一种解决方法是对于包含中文的字段加上"binary"属性,使之作为二进制比较,例如将"name char(10)"改成"name char(10)binary"。

二. 方法2 

  如果你使用源码编译MySQL,可以编译MySQL时使用--with--charset=gbk 参数,这样MySQL就会直接支持中文查找和排序了。 
 
 


 叶大马猴 回复于:2002-03-28 14:48:58
--with--charset=gbk 
--with--charset=gb2312
哪个是好选择?

 redfox 回复于:2002-03-29 08:59:40
gbk

 叶大马猴 回复于:2002-03-29 12:11:58
后来查了,
默认的是latin1,
编译时用  extra-charsets=gb2312,gbk,
用,来分别加入多个字符集。

 diekiss 回复于:2003-03-12 22:15:43
win2k下装的mysql怎么修改、配置?

 redfox 回复于:2003-03-12 23:04:26
[quote:f4208708fe="叶大马猴"]后来查了,
默认的是latin1,
编译时用  extra-charsets=gb2312,gbk,
用,来分别加入多个字符集。[/quote:f4208708fe]gbk饱含gb2312

 twos 回复于:2003-04-16 17:02:32
my.ini中
[mysqld]
default-character-set=gb2312

 uglyduck 回复于:2003-05-22 10:46:09
"mysql在查询字符串时是大小写不敏感的,在编绎mysql时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中 
中文编码字符大小写转换造成了这种现象,比较应急的方法是对于包含中文的字段加上"binary"属性,使之作二进制比较, 
例如将"name char(10)"改成"name char(10)binary"."

 boydreaming 回复于:2004-03-01 11:07:19
[quote:837f7260a9="叶大马猴"]MySQL中文排序错误的解决方法 
作者: 奥索网  评价:  上站日期: 2001-12-29  
--------------------------------------------------------------------------------

  在MySQL中,进行中文排序和查找的时候,对..........[/quote:837f7260a9]

我发现在mysql 4.0里 ,如果编译--with-character=gbk的话,安装到mysql_install_db时,无法通过,提示说找不到gbk.xml。:(
于是,又下载了几个版本,也找不到这个文件。真奇怪。

如果解决啊?

 jonny200 回复于:2004-12-14 11:58:23
我的是rpm装的!
用了这个办法:"name char(10)"改成"name char(10)binary"."

可是不管用,怎么办?

 jonny200 回复于:2004-12-17 08:31:48


 iamfjun 回复于:2004-12-17 22:47:26
观望

 m0925j 回复于:2004-12-20 09:45:36
windows下试的时候,直接把default-character-set=gbk加到[mysqld]下面就可以了,可是我现在在AIX上的my.cnf的[mysqld]下面加上default-character-set=gbk就这样 
# ./safe_mysqld 
Starting mysqld daemon with databases from /var/lib/mysql 
041217 17:39:29 mysqld ended 
mysql起不来。。。 
怎么回事啊?

 jo_fox 回复于:2004-12-20 15:28:51
name char(10)"改成"name char(10)binary"

会导致windows下面mysql崩溃的


出错的时候看看/mydata目录下面的错误日至,里面有详细描述的

 m0925j 回复于:2004-12-20 17:36:07
刚看了mylib.err里面是这么说的:
041217 10:26:45  mysqld started
041217 10:26:45  Cant start server: Bind on TCP/IP port: Address already in use
041217 10:26:45  Do you already have another mysqld server running on port: 3306 ?
041217 10:26:45  Aborting

041217 10:26:45  /opt/freeware/libexec/mysqld: Shutdown Complete

041217 10:26:45  mysqld ended
我加上default-character-set=gbk就会这样,不加就能正常启动,为什么会跟什么TCP/IP扯上了啊

 jo_fox 回复于:2004-12-21 11:46:28
那是因为你的mysql还没停掉

先运行killall mysqld

 m0925j 回复于:2004-12-21 15:23:43
/opt/freeware/libexec/mysqld: File /opt/freeware/share/mysql/charsets/gbk.conf not found (Errcode: 2)
/opt/freeware/libexec/mysqld: Character set gbk is not a compiled character set and is not specified in the /opt/freeware/share/mysql/charsets/Index file
041217 17:04:21  Aborting
呵呵,不好意思,搞错了,错误日志应该是这段。
请问要怎么添加那个gbk.conf文件啊,直接找个这个文件放到那个目录下面就可以了吗?我也找不到哪儿有这个东西下载


客户服务中心信箱:[email protected] [email protected] 网站地图

声明

合作伙伴: