Mysql utf8\u general\u ci和utf8\u unicode\u ci之间有什么区别?

Mysql utf8\u general\u ci和utf8\u unicode\u ci之间有什么区别?,mysql,unicode,character-encoding,Mysql,Unicode,Character Encoding,可能重复: 我有两个unicode选项,对于mysql数据库来说很有希望 utf8_general_ci unicode (multilingual), case-insensitive utf8_unicode_ci unicode (multilingual), case-insensitive 您能解释一下utf8\u general\u ci和utf8\u unicode\u ci之间的区别吗?在设计数据库时,选择其中一种对另一种有什么影响?utf8\u general\u ci是一

可能重复:

我有两个unicode选项,对于mysql数据库来说很有希望

utf8_general_ci unicode (multilingual), case-insensitive
utf8_unicode_ci unicode (multilingual), case-insensitive

您能解释一下utf8\u general\u ci和utf8\u unicode\u ci之间的区别吗?在设计数据库时,选择其中一种对另一种有什么影响?

utf8\u general\u ci
是一种非常简单的排序规则,并且在Unicode上非常不完整,在一般Unicode文本上会给出不正确的结果。它所做的是:

  • 转换为Unicode规范化形式D以进行规范化分解
  • 删除任何组合字符
  • 转换为大写
这在Unicode上无法正常工作,因为它不理解Unicode大小写。单是Unicode的大小写就比ASCII思维的方法要复杂得多。例如:

  • “的小写字母”ẞ” 是“ß”,但“ß”的大写字母是“SS”
  • 有两个小写希腊字母,但只有一个大写字母;
  • 像“ø”这样的字母不会分解为“o”加上变音符号,这意味着它无法正确排序
还有许多其他微妙之处

  • utf8\u unicode\u ci
    使用标准,支持所谓的扩展和连字,例如: 德语字母ß(U+00DF字母夏普S)排序在“ss”附近 字母Œ(U+0152拉丁文大写连字OE)排序在“OE”附近

  • utf8\u general\u ci
    不支持扩展/连接,它排序 所有这些字母都是单个字符,有时顺序错误

  • utf8\u unicode\u ci
    通常对所有脚本都更准确。 例如,在西里尔语块上:
    utf8\u unicode\u ci
    适用于所有这些语言: 俄罗斯人、保加利亚人、白俄罗斯人、马其顿人、塞尔维亚人和乌克兰人。 而utf8_general_ci仅适用于西里尔语的俄语和保加利亚语子集。 白俄罗斯语、马其顿语、塞尔维亚语和乌克兰语中使用的额外字母 它们的分类不好
  • utf8\u unicode\u ci
    的成本是它有一点点 慢于
    utf8\u general\u ci
    。但这是您为正确性付出的代价。您可以选择错误的快速答案,也可以选择正确的稍微慢一点的答案。您可以选择。 很难证明给出错误答案是正确的,所以最好假设
    utf8\u general\u ci
    不存在,并且总是使用
    utf8\u unicode\u ci
    。除非你想要错误的答案

    来源:

    来自:

    对于任何Unicode字符集,使用
    \u general\u ci
    排序规则执行的操作都比使用
    \u Unicode\u ci
    排序规则执行的操作要快。例如,
    utf8\u general\u ci
    排序规则执行的比较要快,但正确性稍差它支持诸如扩展之类的映射;也就是说,当一个字符与其他字符的组合相比较时。例如,在德语和其他一些语言中,“
    ß
    ”等于“
    ss
    ”.
    utf8\u unicode\u ci
    还支持压缩和可忽略字符。
    utf8\u general\u ci
    是一种传统排序规则,不支持扩展、压缩或可忽略字符。它只能对字符进行一对一比较


    语言列表的道具像这样的答案是直接从mysql论坛复制的,当你复制/粘贴一个答案时,不会阻止你引用原始源代码:为什么你会想使用
    utf8\u-general\u-ci
    而不是
    utf8\u-unicode\u-ci
    ,那么?永远不要使用
    utf8\u-general\u-ci