我登录了MariaDB / MySQL并输入:

SHOW COLLATION;

我在可用的归类中看到utf8mb4_unicode_ciutf8mb4_unicode_520_ci。这两种归类之间有什么区别,我们应该使用哪个?

最佳答案

那么,您将需要阅读文档。我无法告诉您应该使用什么,因为每个项目都不同。

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归类保留原始xxx_general_ci归类在5.1.24之前的顺序,并允许升级在MySQL 5.1.24之前创建的表。有关更多信息,请参见第2.11.3节“检查是否必须重建表或索引”和第2.11.4节“重建或修复表或索引”。

资料来源:https://dev.mysql.com/doc/refman/5.6/en/charset-collation-names.html

08-24 16:26