所有语言的 MySQL 排序规则
Posted
技术标签:
【中文标题】所有语言的 MySQL 排序规则【英文标题】:MySQL collation for all languages 【发布时间】:2010-11-29 20:48:17 【问题描述】:我目前正在开发一个网站,该网站将展示世界上几乎所有语言的内容。而且我在选择要在 mysql 中定义的最佳排序规则时遇到问题。
哪一个最能支持所有角色?还是最准确的?
或者最好将所有字符转换为 unicode?p>
【问题讨论】:
【参考方案1】:我通常使用 8 位 UCS/Unicode 转换格式,它适用于任何(以及大多数)语言
utf8_general_ci
http://dev.mysql.com/doc/refman/5.0/en/charset-unicode.html
【讨论】:
我想建议使用 utf8_unicode_ci 而不是 utf8_general_ci。有关为什么 unicode 优于一般的更多信息@***.com/questions/766809/…【参考方案2】:接受的答案是错误的(也许在 2009 年是正确的)。
utf8mb4_unicode_ci
是用于广泛语言支持的最佳编码。
推理和支持证据:
您想使用
utf8mb4
而不是utf8
,因为后者仅支持 3 字节字符,而您希望支持 4 字节字符。 (ref)
和
您想使用
unicode
而不是general
,因为后者从未正确排序。 (ref)
【讨论】:
谢谢!但是默认情况下为每个数据库/表执行此操作有什么缺点?与使用默认 mysql 设置(我猜是 latin1)相比,它是否使用更多空间或会使我的查询/搜索效率低下【参考方案3】:使用 utf8mb4 代替 utf8
utf8mb4_general_ci => support 1, 2, 3 or 4 bytes
和
utf8_general_ci or utf8mb3_general_ci => support 1, 2 or 3 bytes
它会根据需要占用你的磁盘空间。
【讨论】:
【参考方案4】:使用 utf8mb4_unicode_ci
或 utf8mb4_general_ci 可能会很棘手并导致意外行为。
注意。
如果您想避免下面这样的情况,也许utf8mb4_unicode_bin
可能是一个不错的选择。
【讨论】:
以上是关于所有语言的 MySQL 排序规则的主要内容,如果未能解决你的问题,请参考以下文章