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就会直接支持中文查找和排序了。
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文件啊,直接找个这个文件放到那个目录下面就可以了吗?我也找不到哪儿有这个东西下载 |