Flu*_*lux 28 mysql unicode collation mariadb
我登录MariaDB/MySQL并输入:
SHOW COLLATION;
Run Code Online (Sandbox Code Playgroud)
我看到的utf8mb4_unicode_ci
和utf8mb4_unicode_520_ci
可用的排序规则之一.这两种排序规则之间有什么区别,我们应该使用哪种排序规则?
Stu*_*urf 32
那么你需要阅读文档.我无法告诉你应该使用什么因为每个项目都不同.
MySQL排序规则名称遵循以下约定:
排序规则名称以与其关联的字符集的名称开头,后跟一个或多个指示其他排序规则特征的后缀.例如,utf8_general_ci和latin_swedish_ci分别是utf8和latin1字符集的排序规则.
特定于语言的排序规则包括语言名称.例如,utf8_turkish_ci和utf8_hungarian_ci分别使用土耳其语和匈牙利语的规则为utf8字符集排序字符.
排序的区分大小写由_ci(不区分大小写),_ cc(区分大小写)或_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
http://mysql.rjweb.org/utf8mb4_collat ions.html 显示了这两种排序规则以及许多其他排序规则之间的差异。
\nUnicode 提供了一个随着以下数字不断发展的标准:
\n4.0.0 - utf8mb4_unicode_ci\n5.2.0 - utf8mb4_unicode_520_ci\n9.0.0 - utf8mb4_0900_ai_ci\n
Run Code Online (Sandbox Code Playgroud)\n通常最好使用可用的最新标准。
\n例如,在该页面上有
\nutf8mb4_unicode_ci: \n A=a=\xc2\xaa=\xc3\x80=\xc3\x81=\xc3\x82=\xc3\x83=\xc3\x84=\xc3\x85=\xc3\xa0=\xc3\xa1=\xc3\xa2=\xc3\xa3=\xc3\xa4=\xc3\xa5=\xc4\x80=\xc4\x81=\xc4\x82=\xc4\x83=\xc4\x84=\xc4\x85 Aa ae az \xc3\x86=\xc3\xa6\nutf8mb4_unicode_520_ci and utf8mb4_0900_ai_ci:\n A=a=\xc2\xaa=\xc3\x80=\xc3\x81=\xc3\x82=\xc3\x83=\xc3\x84=\xc3\x85=\xc3\xa0=\xc3\xa1=\xc3\xa2=\xc3\xa3=\xc3\xa4=\xc3\xa5=\xc4\x80=\xc4\x81=\xc4\x82=\xc4\x83=\xc4\x84=\xc4\x85 Aa ae=\xc3\x86=\xc3\xa6 az\n
Run Code Online (Sandbox Code Playgroud)\n这显示了与“A”的一个区别,即“\xc3\xa6”过去位于“az”之后,但在 5.2.0 和 9.0.0 中被视为等于“ae”。
\n“\xc3\xa6”可能是这些排序规则中重音字母的唯一变化。甚至“\xc5\x93”始终等于“oe”
\n我将开发@StuiterSlurf答案并关注utf8mb4_unicode_ci
/的细节utf8mb4_unicode_520_ci
:
正如您在此处(Peter Gulutzan)所读的那样,对波兰字母“?”进行排序/比较存在问题。(带笔画的L)(小写:“?”; html esc:ł
和Ł
)-我们在编码中有以下假设(与相同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
Run Code Online (Sandbox Code Playgroud)
波兰语字母?在字母L之后和M之前。对于不同的编码系统,您将获得不同的排序结果。这种编码的好与坏都没有,这取决于您的需求。