我试图弄清楚我应该对各种类型的数据使用哪种排序规则。我要存储的内容的100%是用户提交的。
我的理解是,我应该使用UTF-8 General CI(不区分大小写),而不是UTF-8 Binary。但是,我找不到UTF-8通用CI和UTF-8 Unicode CI之间的明显区别。
我应该在UTF-8 General或UTF-8 Unicode CI列中存储用户提交的内容吗? UTF-8 Binary适用于什么类型的数据?
通常,utf8_general_ci比utf8_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_ci和utf8_unicode_ci都执行不区分大小写的比较。相反,utf8_bin区分大小写(除其他差异外),因为它比较字符的二进制值。来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。