MySQL中的utf8_general_ci和utf8_unicode_ci有什么区别?

时间:2010-07-26 18:37:51

标签: mysql character-encoding

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

我隔离的两个是:

  • utf8_general_ci
  • utf8_unicode_ci

所以我的问题是:MySQL中general的{​​{1}}和unicode变体有什么区别? (我来了解utf8是不区分大小写的简写)

在这件事上,任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:2)

来自MySQL manual on Unicode Character Sets

  

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

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

答案 1 :(得分:-2)

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

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