Mysql utf8\u general\u ci和utf8\u unicode\u ci之间有什么区别?
可能重复:Mysql utf8\u general\u ci和utf8\u unicode\u ci之间有什么区别?,mysql,unicode,character-encoding,Mysql,Unicode,Character Encoding,可能重复: 我有两个unicode选项,对于mysql数据库来说很有希望 utf8_general_ci unicode (multilingual), case-insensitive utf8_unicode_ci unicode (multilingual), case-insensitive 您能解释一下utf8\u general\u ci和utf8\u unicode\u ci之间的区别吗?在设计数据库时,选择其中一种对另一种有什么影响?utf8\u general\u ci是一
我有两个unicode选项,对于mysql数据库来说很有希望
utf8_general_ci unicode (multilingual), case-insensitive
utf8_unicode_ci unicode (multilingual), case-insensitive
您能解释一下utf8\u general\u ci和utf8\u unicode\u ci之间的区别吗?在设计数据库时,选择其中一种对另一种有什么影响?
utf8\u general\u ci
是一种非常简单的排序规则,并且在Unicode上非常不完整,在一般Unicode文本上会给出不正确的结果。它所做的是:
- 转换为Unicode规范化形式D以进行规范化分解
- 删除任何组合字符
- 转换为大写
- “的小写字母”ẞ” 是“ß”,但“ß”的大写字母是“SS” 有两个小写希腊字母,但只有一个大写字母;
- 像“ø”这样的字母不会分解为“o”加上变音符号,这意味着它无法正确排序
utf8\u unicode\u ci
使用标准,支持所谓的扩展和连字,例如:
德语字母ß(U+00DF字母夏普S)排序在“ss”附近
字母Œ(U+0152拉丁文大写连字OE)排序在“OE”附近utf8\u general\u ci
不支持扩展/连接,它排序
所有这些字母都是单个字符,有时顺序错误
utf8\u unicode\u ci
通常对所有脚本都更准确。
例如,在西里尔语块上:
utf8\u unicode\u ci
适用于所有这些语言:
俄罗斯人、保加利亚人、白俄罗斯人、马其顿人、塞尔维亚人和乌克兰人。
而utf8_general_ci仅适用于西里尔语的俄语和保加利亚语子集。
白俄罗斯语、马其顿语、塞尔维亚语和乌克兰语中使用的额外字母
它们的分类不好utf8\u unicode\u ci
的成本是它有一点点
慢于utf8\u general\u ci
。但这是您为正确性付出的代价。您可以选择错误的快速答案,也可以选择正确的稍微慢一点的答案。您可以选择。
很难证明给出错误答案是正确的,所以最好假设utf8\u general\u ci
不存在,并且总是使用utf8\u unicode\u ci
。除非你想要错误的答案
来源:来自:
对于任何Unicode字符集,使用\u general\u ci
排序规则执行的操作都比使用\u Unicode\u ci
排序规则执行的操作要快。例如,utf8\u general\u ci
排序规则执行的比较要快,但正确性稍差它支持诸如扩展之类的映射;也就是说,当一个字符与其他字符的组合相比较时。例如,在德语和其他一些语言中,“ß
”等于“ss
”.utf8\u unicode\u ci
还支持压缩和可忽略字符。utf8\u general\u ci
是一种传统排序规则,不支持扩展、压缩或可忽略字符。它只能对字符进行一对一比较
语言列表的道具像这样的答案是直接从mysql论坛复制的,当你复制/粘贴一个答案时,不会阻止你引用原始源代码:为什么你会想使用
utf8\u-general\u-ci
而不是utf8\u-unicode\u-ci
,那么?永远不要使用utf8\u-general\u-ci