47

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

4

3 回答 3

30

排序规则告诉数据库如何执行字符串匹配和排序。它应该与您的字符集匹配。

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

默认排序规则是 normal latin1

于 2009-08-05T04:23:25.733 回答
20

排序规则实际上不是默认值,它为您提供了默认排序规则作为首选。

我们谈论的是collat​​ion,或者您的数据库将在其文本类型中使用的字符集。您的默认选项通常基于区域设置,因此除非您打算全球化,否则这通常是非常积极的。

排序规则还确定大小写和重音敏感度(即,“大”==“大”?对于 CI,它是)。查看所有选项的MySQL 列表

于 2009-08-05T03:57:28.687 回答
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 之间有什么区别

于 2019-08-01T10:25:25.183 回答