为什么MySQL的默认排序规则为latin1_swedish_ci?


112

latin1_swedish_ci当其他选项(如latin1_general_ci或)看起来更合理时,将其设置为已编译默认值的原因是什么utf8_general_ci


6
瑞典人刚刚买了这个荣誉[笑话]
zerkms 2011年


1
请注意,utf8_general_ci它不支持4字节UTF-8,因此要获得真正的UTF-8支持,请utf8mb4_general_ci使用其他mb4变体之一。
ColinM

Answers:


109

写这封信的那个家伙是一家瑞典公司的联席主管。

出于类似的原因,可能是Microsoft SQL Server的默认语言us_english。


5
他是芬兰人,但是芬兰人和瑞典人几乎共享相同的特殊字符,因此他们共享相同的不区分大小写的排序规则
kommradHomer 2014年

5
谈论“良好的默认设置”。这当然不是。很高兴看到20年后呢?他们将其更改为合理的默认值,例如utf8_general_ci。干得好,MySQL!
Michael Trouw 2015年

2
我认为这对我来说可能是最好的,因为我不是专家。我一生都在撒谎
Pablo Escobar

3
是的,您说得对,他命名为MariDB(妻子名称为Maria)和MaxDB(他的儿子名称为Max)。但是为什么他留下了女儿的名字..!:) 大声笑。!
Ajmal Praveen

89

latin1_swedish_ci是一个单字节字符集,与不同utf8_general_ci

相比之下,latin1_general_ci它支持欧洲语言中使用的各种额外字符。因此,如果您不知道将使用哪种语言,并且只能使用单字节字符集,那么这是最佳选择。


36
我喜欢这个答案,因为它试图客观地证明选择拉丁瑞典语的合理性。但是,从社会的角度来看,对于为什么特别选择瑞典语,可接受的答案似乎是一个更合理的解释。
艾伦(Alan)

2
当然,这可能是作者的推理,只是他是瑞典人的巧合。瑞典人希望(并知道)支持其他欧洲字符似乎是合理的。
马特

3
-1可接受的答案可能只是一个意见,但比该答案合理100倍。另外,您还可以看到“编写该文件的人”也以女儿Daugther的名字命名MariaDB,以儿子儿子的名字命名为maxDB。
kommradHomer 2014年

2
“ latin1_general_ci它支持欧洲语言中使用的各种其他字符”-为了清楚起见,utf8_general_ci与utf8_unicode不同,它确实对欧洲语言特定的字符提供了广泛的支持。与“ latin1_swedish_ci”相比,我没有优势。还是我错了?
MEM 2015年

例如,CHAR(2)latin1使用2个字节,CHAR(2)utf8mb4(完整的utf8)使用8个字节。我使用latin1来存储两位数的国家/地区代码,因为永远不会有非欧洲字符
the_nuts
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.