MySQL排序规则不像文档中所宣传的那样工作

时间:2008-11-11 10:18:45

标签: mysql unicode character-encoding collation

我试图让我的MySQL表在这个MySQL Reference页面中表现为示例2中的utf8表:

CREATE TABLE germanutf8 (c CHAR(10)) CHARACTER SET utf8 COLLATE utf8_unicode_ci;
INSERT INTO germanutf8 VALUES ('Bar'), ('Bär');
SELECT * FROM germanutf8 WHERE c = 'Bär';

根据这个例子,这应该产生:

+------+
| c    |
+------+
| Bar  |
| Bär  |
+------+

但我所得到的只是简单"Bär"。难道我做错了什么?我应该调整我的设置吗?

我在Mac OS X上的MySQL 5.0.45和Red Hat上的5.0.51a上尝试过这个。

编辑:我已尝试设置SET NAMES 'utf8',但这仍然会给出相同的结果。这样做后,我的变量是

+--------------------------+---------------------------------------------------------------------+
| Variable_name            | Value                                                               |
+--------------------------+---------------------------------------------------------------------+
| character_set_client     | utf8                                                                | 
| character_set_connection | utf8                                                                | 
| character_set_database   | utf8                                                                | 
| character_set_filesystem | binary                                                              | 
| character_set_results    | utf8                                                                | 
| character_set_server     | latin1                                                              | 
| character_set_system     | utf8                                                                | 
| character_sets_dir       | /usr/local/mysql-5.0.45-osx10.4-powerpc-64bit/share/mysql/charsets/ | 
+--------------------------+---------------------------------------------------------------------+

1 个答案:

答案 0 :(得分:2)

您的INSERT上有任何警告吗?

您确定您的MySQL客户端会正确解释您输入的内容吗?例如。如果你正在SSH服务器,并从命令行运行mysql,shell编码和mysql客户端编码都设置为UTF-8?

您是否尝试过

SET NAMES 'utf8'

在运行这些查询之前?