当我通过 phpMyAdmin 创建一个新的 MySQL 数据库时,我可以选择排序规则(例如,默认、armscii8、ascii、...和 UTF-8)。我知道的是 UTF-8,因为我总是在 HTML 源代码中看到它。但是默认排序规则是什么?这些选择之间有什么区别,我应该使用哪一个?
3 回答
排序规则告诉数据库如何执行字符串匹配和排序。它应该与您的字符集匹配。
如果您使用 UTF-8,则排序规则应为utf8_general_ci
. 这将按 unicode 顺序排序(不区分大小写),并且适用于大多数语言。它还保留 ASCII 和 Latin1 顺序。
默认排序规则是 normal latin1
。
排序规则实际上不是默认值,它为您提供了默认排序规则作为首选。
我们谈论的是collation,或者您的数据库将在其文本类型中使用的字符集。您的默认选项通常基于区域设置,因此除非您打算全球化,否则这通常是非常积极的。
排序规则还确定大小写和重音敏感度(即,“大”==“大”?对于 CI,它是)。查看所有选项的MySQL 列表。
简短的回答:在处理 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 之间有什么区别