【问题标题】:What's the difference between utf8_general_ci and utf8_unicode_ci in MySQL?MySQL 中的 utf8_general_ci 和 utf8_unicode_ci 有什么区别?
【发布时间】:2011-03-21 06:05:09
【问题描述】:

一段时间以来,我一直使用 phpMyAdmin 来管理我的本地 MySQL 数据库。我开始了解的一件事是我的数据库的正确字符集。我已经决定 UTF-8 是最好的兼容性(因为我的 XHTML 模板作为 UTF-8 提供)但让我感到困惑的一件事是我在 phpMyAdmin 界面中看到的 UTF-8 的各种选项?

我隔离的两个是:

  • utf8_general_ci
  • utf8_unicode_ci

所以我的问题是:MySQL 中utf8generalunicode 变体有什么区别? (我了解到ci 是不区分大小写的简写)

在这件事上任何帮助将不胜感激。

【问题讨论】:

  • 简短的回答是 utf8_general_ci 对于 Unicode 文本已损坏,甚至不应该存在。永远不要使用它。

标签: mysql character-encoding


【解决方案1】:

来自MySQL manual on Unicode Character Sets

对于任何 Unicode 字符集,使用 _general_ci 归类执行的操作比使用 _unicode_ci 归类执行的操作要快。例如,utf8_general_ci 归类的比较比 utf8_unicode_ci 的比较更快,但正确性稍差。原因是 utf8_unicode_ci 支持扩展等映射;也就是说,当一个字符比较等于其他字符的组合时。例如,在德语和其他一些语言中,“ß”等于“ss”。 utf8_unicode_ci 还支持缩写和可忽略的字符。 utf8_general_ci 是不支持扩展、收缩或可忽略字符的旧版排序规则。它只能在字符之间进行一对一的比较。

请参阅further information and examples 的参考页面。

【讨论】:

    【解决方案2】:

    #@%!ing manual discusses this... :)

    其中一个问题是某些操作的速度和准确性。

    【讨论】:

      猜你喜欢
      • 2010-11-05
      • 2021-12-05
      相关资源
      最近更新 更多