在MySQL中,我应该选择哪种排序规则?

bbt*_*ang 35 mysql collation

当我通过phpMyAdmin创建一个新的MySQL数据库时,我可以选择排序规则(例如-default,armscii8,ascii,...和UTF-8).我知道的是UTF-8,因为我总是在HTML源代码中看到这一点.但是默认排序规则是什么?这些选择之间有什么区别,我应该使用哪一个?

ZZ *_*der 25

排序规则告诉数据库如何执行字符串匹配和排序.它应该与你的charset相匹配.

如果使用UTF-8,则排序规则应为utf8_general_ci.这将按Unicode顺序排序(不区分大小写),并且适用于大多数语言.它还保留ASCII和Latin1顺序.

默认排序规则通常是latin1.

  • 不要使用任何utf8排序规则.它们仅存储最多3个字节的代码点.正确的UTF-8称为utf8mb4,最多允许4个字节,因此包括表情符号.https://mathiasbynens.be/notes/mysql-utf8mb4 (3认同)
  • @user1318499 您能否将您的评论转化为答案并提供更多详细信息? (2认同)

Eri*_*ric 18

排序规则实际上不是默认排序,它会将默认排序规则作为首选.

我们所讨论的是整理,或者数据库将在其文本类型中使用的字符集.您的默认选项通常基于区域设置,因此除非您计划进行全球化,否则通常是非常敏锐的.

排序还可以确定大小写和重音敏感度(即'大'=''大'?对于CI,它是).查看所有选项的MySQL列表.

  • 我知道了.我们的项目针对美国和整个世界,所以我认为如果我们使用UTF-8会更好,对吗? (4认同)
  • @AlenSaqe - 是的! (3认同)

Chr*_*Dev 9

简短回答:在处理 MySql 和 MariaDB 中的排序规则时始终使用utf8mb4(特别是utf8mb4_unicode_ci)。

长答案:

MySQL 的utf8编码命名笨拙,因为它与正确的 UTF-8 编码不同。它不提供完整的 Unicode 支持,这可能会导致数据丢失或安全漏洞。

幸运的是,MySQL 5.5.3(于 2010 年初发布)引入了一种名为utf8mb4的新编码,它映射到正确的 UTF-8,因此完全支持 Unicode。

在此处阅读全文:https : //mathiasbynens.be/notes/mysql-utf8mb4

至于具体utf8mb选择哪个,请使用,utf8mb4_unicode_ci以便始终正确处理排序,并具有最小/不明显的性能缺陷。在此处查看更多详细信息:utf8_general_ci 和 utf8_unicode_ci 有什么区别