一尘不染

UTF-8:一般?斌吗 Unicode?

mysql

我试图弄清楚我应该对各种类型的数据使用哪种排序规则。我要存储的内容的100%是用户提交的。

我的理解是,我应该使用UTF-8 General CI(不区分大小写),而不是UTF-8 Binary。但是,我找不到UTF-8通用CI和UTF-8
Unicode CI之间的明显区别。

  1. 我应该在UTF-8 General或UTF-8 Unicode CI列中存储用户提交的内容吗?
  2. UTF-8 Binary适用于什么类型的数据?

阅读 249

收藏
2020-05-17

共1个答案

一尘不染

通常, utf8_general_ciutf8_unicode_ci 快,但正确性较差。

区别在于:

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

引用自:http :
//dev.mysql.com/doc/refman/5.0/en/charset-unicode-
sets.html

有关更多详细说明,请阅读以下来自MySQL论坛的帖子:http
:
//forums.mysql.com/read.php?103,187048,188748

至于utf8_bin: utf8_general_ciutf8_unicode_ci都 执行不区分大小写的比较。相反,
utf8_bin区分大小写 (除其他差异外),因为它比较字符的二进制值。

2020-05-17