请帮助我找出mysql归类之间的区别:
utf8mb4_unicode_ci
与utf8mb4_default
P.S。每个人都建议使用utf8mb4_unicode_ci
。如果它如此流行,为什么不默认它呢?与默认设置有何不同?
我使用MYSQL 5.7.21
答案 0 :(得分:3)
utf8mb4_default
?您在哪里看到这个?
utf8mb4的默认排序规则是utf8mb4_general_ci。这一次仅检查一个字节,因此ss
不被视为等于ß
。 utf8mb4的大多数其他归类确实认为它们相等。
在通用的“更好”归类列表中的下一个是utf8mb4_unicode_ci
。这与几年前编写的Unicode排序算法版本4.0相符。
然后是utf8mb4_unicode_520_ci
(Unicode 5.20),它可以“正确”处理更多的事情。
当您使用MySQL 8.0时,将有一个9.0版本utf8mb4_0900_ai_ci
。
有关差异的详细信息,请参见http://mysql.rjweb.org/utf8_collations.html。 (注意:对于该页面上提供的信息,“ utf8”与“ utf8mb4”的工作方式相同。)要注意的第一件事:
utf8_general_ci A=a=À=Á=Â=Ã=Ä=Å=à=á=â=ã=ä=å=Ā=ā=Ą=ą Aa ae az
utf8_unicode_ci A=a=ª=À=Á=Â=Ã=Ä=Å=à=á=â=ã=ä=å=Ā=ā=Ą=ą Aa ae az Æ=æ
utf8_unicode_520_ci A=a=ª=À=Á=Â=Ã=Ä=Å=à=á=â=ã=ä=å=Ā=ā=Ą=ą Aa ae=Æ=æ az
这3行指出Æ
和æ
的3种不同处理方式。
Z
之后。)ae
。对于5.7,并且没有任何特定的语言要求,我将使用utf8mb4_unicode_520_ci
。
回到您的“为什么”问题。更改默认值会带来损害现有安装的风险,而这无济于事。所以,我想设计师是保守的。另一方面,8.0有很多重大更改,因此不太愿意更改。因此,转到utf8mb4_0900_ai_ci。