我对 utf8mb4_general_ci 表中的 unicode 字符有疑问
SELECT * FROM `t1` WHERE c1='musca'
返回
musca
muşca
muşcă
我想知道这是否是一个错误 - 听起来像是;
如果它影响搜索 - 它可能,或者更好地说它应该;我无法使列成为唯一索引
我应该做什么,以便mysql将a和ă和s和ş视为不同的实体? (可能是 a 和 â、t 和 ţ、i 和 î,但我还没有检查过)。
我应该将 unicode 字符存储为 â ă ş ţ î 吗?
我需要检索用户输入的精确匹配。
编辑添加:
答案在评论中:我应该将这些列整理为 utf8mb4_0900_as_cs,如 Madhur Bhaiya 解释和演示的那样
最佳答案
您需要在相关表列上使用COLLATION utf8_romanian_ci
(或utf8mb4_romanian_ci)。它是唯一将这 5 个字符视为单独“字母”的排序规则。
引用:http://mysql.rjweb.org/utf8_collations.html
这在大多数版本的 MySQL/MariaDB 中都可用。不需要 utf8mb4_0900_as_cs
,这意味着 MySQL 8.0。
关于mysql utf8mb4_general_ci 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53517708/