【问题标题】:Difference between utf8mb4_unicode_ci and utf8mb4_unicode_520_ci collations in MariaDB/MySQL?MariaDB/MySQL 中 utf8mb4_unicode_ci 和 utf8mb4_unicode_520_ci 排序规则之间的区别?
【发布时间】:2023-03-22 00:48:01
【问题描述】:

我登录 MariaDB/MySQL 并输入:

SHOW COLLATION;

我在可用的排序规则中看到了utf8mb4_unicode_ciutf8mb4_unicode_520_ci。这两个排序规则有什么区别,我们应该使用哪个排序规则?

【问题讨论】:

  • 我在 SO herehere 上找到了答案,我得到了一个易于理解的解释 here

标签: mysql unicode mariadb collation


【解决方案1】:

好吧,您可以阅读文档中的差异。我不能告诉你应该使用什么,因为每个项目都不一样。

10.1.3 排序规则命名约定

MySQL 排序规则名称遵循以下约定:

排序规则名称以字符集的名称开头 它是关联的,后​​跟一个或多个表示其他的后缀 整理特征。例如,utf8_general_ci 和 latin_swedish_ci 是 utf8 和 latin1 字符的排序规则 分别设置。

特定于语言的排序规则包括语言名称。例如, utf8_turkish_ci 和 utf8_hungarian_ci 为 utf8 排序字符 分别使用土耳其语和匈牙利语规则的字符集。

排序区分大小写由_ci(不区分大小写)表示, _cs(区分大小写)或 _bin(二进制;字符比较基于字符二进制代码值)。例如,latin1_general_ci 是 不区分大小写,latin1_general_cs 区分大小写,latin1_bin 使用二进制代码值。

对于 Unicode,排序规则名称可能包含版本号以指示 Unicode 排序算法 (UCA) 的版本, 整理是基于。没有版本号的基于 UCA 的排序规则 该名称使用版本 4.0.0 UCA 权重键。例如:

utf8_unicode_ci(未命名版本)基于 UCA 4.0.0 权重 键 >(http://www.unicode.org/Public/UCA/4.0.0/allkeys-4.0.0.txt)。

utf8_unicode_520_ci 基于 UCA 5.2.0 权重键 (http://www.unicode.org/Public/UCA/5.2.0/allkeys.txt)。

对于 Unicode,xxx_general_mysql500_ci 排序规则保留 5.1.24 之前的原始 xxx_general_ci 排序规则和 允许升级在 MySQL 5.1.24 之前创建的表。更多 信息,请参阅第 2.11.3 节,“检查表或索引 必须重建”和第 2.11.4 节,“重建或修复表 或索引”。

Source

【讨论】:

    【解决方案2】:

    我会开发@StuiterSlurf的答案,重点关注utf8mb4_unicode_ci/utf8mb4_unicode_520_ci的细节:

    如您所见here (Peter Gulutzan) 排序/比较波兰字母“Ł”(带笔划的 L)(小写:“ł”;html esc:@ 987654325@ 和 Ł ) - 我们在编码中有以下假设(与 mb4 相同):

    utf8_polish_ci      Ł greater than L and less than M
    utf8_unicode_ci     Ł greater than L and less than M
    utf8_unicode_520_ci Ł equal to L
    utf8_general_ci     Ł greater than Z
    

    在波兰语中,字母 Ł 在字母 L 之后和 M 之前。对于不同的编码系统,您会得到不同的排序结果。这种编码没有一个更好或更坏 - 这取决于您的需求。

    【讨论】:

    • 这绝对取决于您要构建的应用程序。这就是为什么您可以在应用程序开始时及早进行研究,然后再进行研究。所以你有更多带有奇怪字母的语言,每种语言都需要另一个 unicode。
    【解决方案3】:

    要查看更多关于实际差异的讨论,您可以转到 https://dev.mysql.com/worklog/task/?id=2673 并单击“高级架构”。

    【讨论】:

      猜你喜欢
      • 2019-02-12
      • 2018-02-11
      • 2018-12-19
      • 2017-07-12
      • 1970-01-01
      • 2023-04-09
      • 2015-07-07
      相关资源
      最近更新 更多