当我通过phpMyAdmin创建一个新的MySQL数据库时,我可以选择排序规则(例如-default,armscii8,ascii,...和UTF-8)。我知道的是UTF-8,因为我总是在HTML源代码中看到这一点。但是默认排序规则是什么?这些选择之间有什么区别,我应该使用哪一个?
答案 0 :(得分:24)
Collation告诉数据库如何执行字符串匹配和排序。它应该与你的charset相匹配。
如果使用UTF-8,则排序规则应为utf8_general_ci。这将按Unicode顺序排序(不区分大小写),并且适用于大多数语言。它还保留ASCII和Latin1顺序。
默认排序规则通常是latin1。
答案 1 :(得分:17)
排序实际上不是默认排序,它会将默认排序规则作为首选。
我们所讨论的是collation,或者数据库将在其文本类型中使用的字符集。您的默认选项通常基于区域设置,因此,除非您计划进行全球化,否则通常是非常敏锐的。
排序还可以确定大小写和重音敏感度(即'大'=''大'?对于CI,它是)。查看所有选项的MySQL list。
答案 2 :(得分:0)
简短的答案:在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
,以便始终正确地处理排序,而对性能的影响最小/不明显。在此处查看更多详细信息:What's the difference between utf8_general_ci and utf8_unicode_ci