1

尽管对这个主题进行了所有讨论,但我无法解决整理所遇到的难题。

  1. 创建了一个数据库:

    CREATE DATABASE Desk_Database CHARACTER SET = utf8 COLLATE = utf8_unicode_ci;
    
  2. 创建了一个名为 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,但显然确实如此。

4

2 回答 2

2

请参阅此处的讨论。基于该讨论,将排序规则设置为 utf8_bin 可能会有所帮助,但也有可能与底层操作系统本身的设置发生冲突。

高温高压

于 2012-07-03T10:49:55.567 回答
2

这是预期的行为:“Andre”和“André”根据 是等价的utf8_unicode_ci。重音不会被丢弃,只是在比较两个字符串是否相等时,将 e 和 é 视为相同。

如果要考虑两者不同,则必须使用其他排序规则,例如utf8_bin.

于 2012-07-03T11:55:54.980 回答