在 MySQL 中,我应该选择哪种排序规则?
Posted
技术标签:
【中文标题】在 MySQL 中,我应该选择哪种排序规则?【英文标题】:In MySQL, which collation should I choose? 【发布时间】:2010-11-16 21:30:43 【问题描述】:当我通过 phpMyAdmin 创建新的 mysql 数据库时,我可以选择排序规则(例如,默认、armscii8、ascii、...和 UTF-8)。我知道的是 UTF-8,因为我总是在 html 源代码中看到它。但是默认排序规则是什么?这些选择之间有什么区别,我应该使用哪一个?
【问题讨论】:
如果要更准确,请使用 utf8_unicode_ci。参考***.com/questions/367711/… unicode_general_ci 在wordpress codex上推荐一个:codex.wordpress.org/Installing_WordPress 【参考方案1】:Collation 告诉数据库如何执行字符串匹配和排序。它应该与您的字符集匹配。
如果您使用 UTF-8,则排序规则应为 utf8_general_ci
。这将按 unicode 顺序排序(不区分大小写),并且适用于大多数语言。它还保留 ASCII 和 Latin1 顺序。
默认排序规则通常是latin1
。
【讨论】:
不要使用任何 utf8 排序规则。它们最多只能存储 3 个字节的代码点。正确的 UTF-8 称为 utf8mb4,它最多允许 4 个字节,因此包括表情符号。 mathiasbynens.be/notes/mysql-utf8mb4 @user1318499 您能否将您的评论转化为答案并提供更多详细信息? 我现在已经忘记了大部分内容,所以我没有信心写更多,但如果你想自己回答,所有信息都应该在我的评论中的链接中。跨度> 【参考方案2】:排序规则实际上不是默认排序规则,它为您提供了默认排序规则作为首选。
我们谈论的是collation,或者您的数据库将在其文本类型中使用的字符集。您的默认选项通常基于区域设置,因此除非您打算全球化,否则这通常是非常积极的。
排序规则还确定区分大小写和重音(即,“大”==“大”?对于 CI,它是)。查看MySQL list 了解所有选项。
【讨论】:
UTF-8 怎么样?我看到 wordpress 使用 UTF-8?我应该使用 UTF-8 吗?? UTF-8 是 Unicode。如果您不在英语国家/地区,使用它是一个很好的选择。 我明白了。我们的项目是针对美国和全世界的,所以我认为如果我们使用 UTF-8 会更好,对吗? 是的,你是。这绝对是一个安全的排序规则。 “您的默认选项通常基于区域设置,因此除非您计划全球化,否则通常会很受欢迎。”不能让这滑落。他在谈论phpMyAdmin,所以网站。万维网怎么没有全球化?例如,如果你想能够显示汉字,区域设置通常是不行的。确保您使用 Unicode,即使您在英语地区。您的访问者很可能来自不同的国家,例如,如果您能显示他们的名字,那就太好了。【参考方案3】:简短回答:在处理 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
【讨论】:
以上是关于在 MySQL 中,我应该选择哪种排序规则?的主要内容,如果未能解决你的问题,请参考以下文章