排序规则和字符集有什么区别?


Answers:


27

字符集是符号列表。如果将ASCIIlatin1进行比较,则使用latin1可以编写所有美式单词,因为latin1包含所有ASCII字符,足以写任何英语单词。相反,使用ASCII时,您将无法编写西欧特定语言的所有单词,因为例如缺少诸如“À”,“ë”,“õ”,“Ñ”之类的字符。

排序规则是关于字符之间的比较。它定义了一组规则来比较字符集的字符。

在MySQL中,排序规则通常与一种语言相关(例如,“ latin1_swedish_ci”,“ latin1_german1_ci”等)。当您订购选择查询时,在某些语言中(带有某些排序规则),将以'ö'开头的单词放置在以'o'和'p'开头的两个单词之间。但是,通过另一个排序规则,可以将该字符完全放在末尾,从而使最终的选择有所不同。


谢谢,现在几乎清楚了。因此,我认为在计划多语言站点时选择排序规则是一个严重的问题?例如,如果排序规则为“ latin1_swedish_ci”,则在处理unicode语言时不会得到预期的结果。
2011年

1
我建议您选择unicode,否则您最终会在某些时候遇到麻烦(例如,亚洲语言)。排序规则将取决于用户的语言。如果要使用多语言工具,则必须谨慎处理。
deadalnix

6

作为上一个答案,字符集是分配给数字的一组字符(字母,数字,表意文字等);为了能够看到它们,您必须具有字体(我们阅读的小的“图片”)。它们对于使用LatinX很重要,因为对于每个X,相同的数字(字节)可能表示不同的字符。

如今,选择编码更为重要:标准是UTF-8,这是Unicode(与ASCII兼容,但可以灵活地包括所有语言,甚至中文和日文)和W3C标准的最成功表示。换句话说,它包括所有字符集。

排序规则:这是一个源自拉丁语的老式单词。这意味着:将副本(原稿)与原始副本进行比较,以发现差异(错误或更改)。过去它非常有用,但现在几乎已经成为一种古老,因为我们的文档和书籍都是使用计算机编写的,并且副本始终与原始副本相同。示例:在意大利语(源自拉丁语)中,有动词“ collazionare”,但在字典中,没有人使用它。

因此,排序规则定义了比较运算符的行为:=,>,<,<=,> = ...

当然,这些运算符用于确定两个字符串是否相同,或者一个单词是否比另一个字符串“更大”,这对于我们要排序非常重要。字母在每种语言中的顺序都不相同,因此使用排序规则的单词可以大于另一个单词,但不能使用另一个单词。实际示例请参见[1]。

  • “ bin”排序规则是最严格的:SELECT“ b” =“ B” => FALSE

  • “ ci”归类不区分大小写:SELECT“ b” =“ B” => TRUE

  • “一般”倾向于忽略一些差异:SELECT“ a” =“à” => TRUE

  • 其他特定于一种或多种语言。示例“瑞典语”(我不知道为什么瑞典语通常是默认设置)

我仍在寻找一个网站,在该网站中详细描述了每种归类的行为...这些示例是基于我的经验。

[1] http://www.olcot.co.uk/sql-blogs/revised-difference-between-collat​​ion-sql_latin1_general_cp1_ci_as-and-latin1_general_ci_as


1
swedish是MySQL某些位中的默认值。它的遗产来自于95
克里斯·伍德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.