代码之家  ›  专栏  ›  技术社区  ›  Toleo

何时使用utf8mb4(bin、general_-ci、unicode_-520_-ci)?[副本]

  •  1
  • Toleo  · 技术社区  · 7 年前

    这个问题已经有了答案:

    我对MySQL排序及其编码感到困惑,人们通常使用以下三种排序之一:

    1. utf8mb_箱
    2. utf8mb4_通用_-ci
    3. utf8mb4_unicode_520_ci

    我不明白的是,如果需要,什么时候使用这些排序规则,比如,

    一张这样名字的桌子

    [id - name]
    

    它只包含来自不同语言的名称字符,例如 法语、德语、拉丁语。…

    我用这种表来排序吗 utf8mb_bin 或者坚持 utf8mb4_unicode_520_ci ,

    另一方面,博客主题表,例如:

    [id - title - subject]
    

    是否将所有列排序规则 utf8mb4_unicode_520_ci 或使用:

    utf8mb_箱 对于 title

    utf8mb4_unicode_520_ci 对于 subject

    据我所知, utf8mb4_unicode_520_ci 其中有一些可以在博客主题中使用的emotes,或者我只是忽略了所有内容并使用 utf8mb4_unicode_520_ci 全部?

    但是总的来说,使用这些不同的排序规则有什么意义呢?它们是如何影响我的结果的 SELECT 询问?

    我想知道的是:

    每种排序规则使用的排序规则:

    1. 姓名
    2. 标题
    3. 学科
    4. 电子邮件
    5. 基本输入输出系统
    6. 信息
    7. 用户名
    1 回复  |  直到 7 年前
        1
  •  3
  •   Álvaro González    7 年前

    您混淆了编码和排序规则。

    可用字符由编码(并且仅由编码)定义。由于utf-8是Unicode兼容的编码,因此 全部的 字符。MySQL的特点是 utf8 编码并没有真正实现UTF-8,只是一个子集,因为它为每个字符分配了3个字节,而且(到目前为止)有些字符需要4个字节。这样 utf8mb4 出生了。

    排序规则是一组规则,告诉您 WHERE foo = bar ORDER BY foo 工作。你得问问自己:如果我在搜索 internet ,是否匹配 Internet ?如果您存储法语、德语和拉丁语单词,则很可能不需要二进制排序规则。理想情况下,您需要一个具有您将要使用的语言的确切规则的排序规则,但是,由于您正在混合语言,因此必须选择通用排序规则。你可以在阅读后做出明智的决定。 Difference between utf8mb4_unicode_ci and utf8mb4_unicode_520_ci collations .