您好,欢迎访问一九零五行业门户网

MySQL 的 utf8_general_ci 和 utf8_unicode_ci 有什么区别,应如

一般的解说是 utf8_general_ci 速度较快,utf8_unicode_ci 准确性较好 … 但快在那里,又好在什么地方呢? 首先就其准确性说,这世界上有无数种文字,除了通用的英文使用我们较熟悉的 a-z 字符外,还有很多种近似的写法用于法文、德文、俄文等等… 光是一个
一般的解说是 utf8_general_ci 速度较快,utf8_unicode_ci 准确性较好 … 但快在那里,又好在什么地方呢?
首先就其准确性说,这世界上有无数种文字,除了通用的英文使用我们较熟悉的 a-z 字符外,还有很多种近似的写法用于法文、德文、俄文等等…
光是一个 a 字就有数十种不同表现
为什么不都用同一种 a 呢,几十种多麻烦啊。事实上,它们在所属的文字上都各有意义,可能代表不同的发音,也可能是其他东西。在某些语言上,同一个单词不同发音可能就代表两个意思。
校对规则utf8_unicode_ci 及 utf8_general_ci 的用途就是对那些看起来不一样的字符进行转换,令我们进行排序比对时更方便准确。
以下面为例,直接看起来是不相等的,但在实际应用上是成立的,这就是 utf8_unicode_ci 及 utf8_general_ci 工作的结果。
? = a
? = o
ü = u
而 utf8_unicode_ci 准确性较好就表现在它有更完整的字元对照表上,它甚至可以将一个特别字符转换成多于一个英文字符,以德文中的 s 例:
在 utf8_unicode_ci 下面等式是成立
? = ss
在 utf8_general_ci 只有这样才成立
? = s
排序规则因为 utf8_unicode_ci 有更完整字符表及转换规则,所以在排序的准确性上也比 utf8_general_ci 高一些。
utf8_general_ci 字符表的一部份
utf8_unicode_ci 有更完整的字符表
效能同样因为 utf8_unicode_ci 的字符表及转换规则更复杂,所以在效能上比 utf8_general_ci 慢。
总结如果你的应用是德文、俄文等等,或者需要精确处理国际化的内容,请用 utf8_unicode_ci 。
否则的话用 utf8_general_ci 就可以了。
备注虽然说 utf8_unicode_ci 的字集比较完整,但其实还是不全的,所以 mysql 还提供了很多种其他语言的专用字集,用于特别的本地应用,详细可以看看下面的官网连结
參考
mysql 官方解说:?http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html
原文:http://www.cnopensource.org/2012/06/mysql-%e7%9a%84-utf8_general_ci-%e5%92%8c-utf8_unicode_ci-%e6%9c%89%e4%bb%80%e4%b9%88%e5%8c%ba%e5%88%ab%ef%bc%8c%e5%ba%94%e5%a6%82%e4%bd%95%e9%80%89%e6%8b%a9%ef%bc%9f/
原文地址:mysql 的 utf8_general_ci 和 utf8_unicode_ci 有什么区别,应如, 感谢原作者分享。
其它类似信息

推荐信息