【问题标题】:MySQL collation for all languages所有语言的 MySQL 排序规则
【发布时间】:2010-11-29 20:48:17
【问题描述】:

我目前正在开发一个网站,该网站将展示世界上几乎所有语言的内容。而且我在选择要在 MySQL 中定义的最佳排序规则时遇到问题。

哪一个最能支持所有角色?还是最准确的?

或者最好将所有字符转换为 unicode?​​p>

【问题讨论】:

    标签: mysql collation


    【解决方案1】:

    我通常使用 8 位 UCS/Unicode 转换格式,它适用于任何(以及大多数)语言

    utf8_general_ci
    

    http://dev.mysql.com/doc/refman/5.0/en/charset-unicode.html

    【讨论】:

    【解决方案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 可能是一个不错的选择。

      【讨论】:

        猜你喜欢
        • 2013-09-26
        • 1970-01-01
        • 2018-05-10
        • 1970-01-01
        • 2011-11-14
        • 2019-07-02
        • 1970-01-01
        • 2011-10-09
        • 2017-06-19
        相关资源
        最近更新 更多