尽管有关于这个主题的所有讨论,我无法通过整理来解决我的难题。
创建了一个DB:
CREATE DATABASE Desk_Database CHARACTER SET = utf8 COLLATE = utf8_unicode_ci;
创建了一个名为Users的表,并插入了以下数据:
INSERT INTO Users
(KlantGroep, TypeUser, Naam, Password)
VALUES ("BNOF", "Manager", "André", "kkk");
INSERT INTO Users
(KlantGroep, TypeUser, Naam, Password)
VALUES ("BNOF", "User", "Ingrid", "ppp");
现在,当使用以下查询时,它会返回一行,但由于André
与Andre
不同,因此找不到任何行:
SELECT klantgroep, typeuser FROM processors
WHERE naam = 'Andre' AND password = 'kkk';
我不明白的是什么。我认为utf8_unicode_ci
不会丢弃e
上的重音,但显然确实如此。
答案 0 :(得分:1)
见this discussion here。基于该讨论,可能有助于将排序规则设置为utf8_bin,但也可能与底层操作系统本身的设置发生冲突。
HTH
答案 1 :(得分:1)
这是预期的行为:根据utf8_unicode_ci
,“Andre”和“André”是等价的。重音不会被丢弃,只是在比较两个字符串是否相等时,e和é被认为是相同的。
如果您想考虑这两种不同,您必须使用其他一些排序规则,例如utf8_bin
。