默认排序规则”

2fjabf4q  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(382)

请帮助我了解mysql workbench中列出的排序规则之间的差异: utf8mb4_unicode_ciutf8mb4 - default collation p、 每个人都建议使用 utf8mb4_unicode_ci . 如果这是如此流行,为什么它不是默认的?它与默认值有什么不同?
我使用mysql 5.7.21。

gzszwxb4

gzszwxb41#

utf8mb4_default ?? 你在哪里看到这个?
utf8mb4的默认排序规则(在mysql 8.0之前)是utf8mb4\u general\u ci。一次只检查一个字节,所以 ss 不等于 ß . utf8mb4的大多数其他排序规则都认为它们相等。
下一个“更好的”通用排序规则列表是 utf8mb4_unicode_ci . 这与几年前编写的unicode排序算法版本4.0相匹配。
然后就来了 utf8mb4_unicode_520_ci (unicode 5.20),它可以“正确”处理更多的事情。
当你使用MySQL8.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

这三条线指出了三种不同的治疗方法 Æ 以及 æ .
这两个连字被同等对待(“不区分大小写”)。
将军不会把它放在其他a的附近(在下面的远处,我们看到他们在分类 Z .)
unicode将它们排列在a之后,b之前,就好像它们是一个单独的“字母”。
_unicode_520_将它们视为等同于字母对 ae .
对于5.7,并且没有任何特定的语言要求,我将使用 utf8mb4_unicode_520_ci .
回到你的问题“为什么”。更改默认值可能会对现有安装造成更大的伤害,而不是帮助。所以,我猜,设计师是保守的。另一方面,8.0有很多重大的变化,所以不太愿意改变。因此,移动到utf8mb4\u 0900\u ai\u ci。

相关问题