我有一个简单查询的问题。假设我有表颜色(颜色,代码)
CREATE TABLE IF NOT EXISTS `colors` (
`color` varchar(20) NOT NULL,
`code` varchar(20) NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
有数据:
INSERT INTO colors VALUES ('blue', 'Conventional'), ('green', 'Realistic');
当我做一个简单的选择查询时
SELECT * FROM colors WHERE code = 'Realistic';
我得到相应的行。
然后,我将代码列翻译成希腊语。所以我更新了 colors 表。
UPDATE colors set code = 'Συμβατικός' WHERE color = 'blue';
UPDATE colors set code = 'Ρεαλιστικός' WHERE color = 'green';
该表已成功更新。但是,如果我现在进行查询
SELECT * FROM colors WHERE code = 'Ρεαλιστικός';
我没有结果!
为什么会发生这种情况?有没有任何想法,因为我无法弄明白。
提前致谢。
答案 0 :(得分:0)
你已经进入了UTF-8奇怪而精彩的世界。
首先要知道的是:
将数据库排序规则设置为UTF-8还不够。
你需要注意一些事情。我敢打赌,你忘了或者不知道要记住的一些事情。试一试,看看是否有帮助。
default_charset = "utf-8";
在MySQL方面,可能需要修改my.ini文件,如下所示:
[client]
default-character-set=UTF-8
[mysql]
default-character-set=UTF-8
[mysqld]
character-set-client-handshake = false #force encoding to uft8
character-set-server=UTF-8
collation-server=UTF-8_general_ci
[mysqld_safe]
default-character-set=UTF-8
在您进行了这些更改后重新启动MySQL。
如果连接客户端无法指定与MySQL通信的编码,则在建立连接后,您可能必须运行以下命令/查询:set names UTF-8;