【问题标题】:MySQL collation: utf8mb4_unicode_ci vs "utf8mb4 - default collation"MySQL 排序规则:utf8mb4_unicode_ci 与“utf8mb4 - 默认排序规则”
【发布时间】:2018-12-19 01:56:30
【问题描述】:

请帮助我了解 MySQL Workbench 中列出的排序规则之间的区别:

utf8mb4_unicode_ciutf8mb4 - default collation

附言每个人都推荐使用utf8mb4_unicode_ci。如果这很受欢迎,为什么它不是默认的?它与默认值有何不同?

我使用 MySQL 5.7.21。

【问题讨论】:

  • SHOW CREATE TABLE 来发现“默认”到底是什么。我想它会说utf8mb4_general_ci 或者utf8mb4_unicode_520_ci。此外,默认值可能会随着 MySQL 的版本而变化。

标签: mysql mysql-workbench collation


【解决方案1】:

utf8mb4_default??你在哪里看到的?

utf8mb4 的默认排序规则(在 MySQL 8.0 之前)是 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 种不同处理方式。

  • 这两个连字被视为相同(“不区分大小写”)。
  • general 不会在其他 A 附近的任何地方对其进行排序。 (远在下方,我们看到它们在Z 之后排序。)
  • unicode 将它们排序在所有 A 之后,B 之前,就好像它们是一个单独的“字母”。
  • _unicode_520_ 将它们视为等同于字母对ae

对于 5.7,如果没有任何特定的语言要求,我会使用 utf8mb4_unicode_520_ci

回到你的“为什么”的问题。更改默认值可能会损害现有安装而不是帮助。所以,我猜,设计师是保守的。另一方面,8.0 有很多重大变化,因此不太愿意改变。因此,转移到 utf8mb4_0900_ai_ci。

【讨论】:

  • 感谢您的回答,请查看我附在问题中的图片。
  • 我没有utf8mb4_unicode_520_ci。我只有utf8mb4_unicode_ciutf8mb4_default - 在utf8mb4_default 的上下文中我找不到任何关于default 的描述。谢谢。
  • @YevgeniyAfanasyev - 现在我看到了这张图片,我想说这是一个草率的列表。这不是说utf8mb4_default,而是说utf8mb4 - “默认”排序规则,这是一个愚蠢的说法,因为它让你不知道哪个是默认值。我认为列表中有错误。在 bugs.mysql.com 上针对 Workbench 提交错误报告
  • @YevgeniyAfanasyev - 同时,选择utf8mb4_unicode_ci;它可能是最好的。
  • 谢谢。所以我的问题是合理的,不仅仅是我看到“不知道哪一个是默认的”。谢谢。
猜你喜欢
  • 2015-07-07
  • 2023-03-17
  • 2018-06-08
  • 2020-11-20
  • 2011-11-14
  • 2012-08-24
  • 1970-01-01
相关资源
最近更新 更多