为什么MySQL使用latin1_swedish_ci作为默认值?

有谁知道为什么latin1_swedish是MySQL的默认值。 在我看来,UTF-8会更加兼容吗?

默认select通常是因为它们是最好的普遍select,但在这种情况下,似乎并不是他们所做的。

就我所见,latin1是预多字节时间内的默认字符集,看起来像是继续下去,可能是因为向下兼容的原因(例如对于没有指定sorting规则的较早的CREATE语句)。

从这里 :

什么4.0做了

MySQL 4.0(和更早的版本)只支持在字符集和sorting组合的概念与在服务器级指定的单字节字符编码的组合。 默认值是latin1 ,它对应于latin1的字符集和MySQL 4.1中的latin1_swedish_ci的sorting规则。

至于为什么瑞典语 ,我只能猜测这是因为MySQL AB是瑞典语。 我看不出有什么其他的select这种sorting的理由,它带有一些特定的sorting怪癖(在ZI认为之后来到),但是他们远没有达到国际标准。

latin1是默认的字符集。 MySQL的latin1与Windows cp1252字符集相同。 这意味着除了IANA latin1将0x80和0x9f之间的代码点视为“未定义”之外,它与官方的ISO 8859-1或IANA(互联网号码分配机构)latin1相同,而cp1252以及MySQL的latin1分配字符为那些职位。

http://dev.mysql.com/doc/refman/5.0/en/charset-we-sets.html

可能会帮助你理解为什么。

与单字节编码相比,使用单字节编码具有一些优点,例如string的长度(以字节为单位)等于该string的字符长度。 所以如果你使用像SUBSTRING这样的函数,那么直接就不清楚你的意思是字符或字节。 另外,出于同样的原因,对内部代码支持多字节编码需要很大的改变。

这种奇怪的特点是历史性的。 他们很久以前就这样做了,现在如果不根据这种行为打破一些应用,他们就不能改变它。

也许UTF8并不stream行。 或者也许MySQL不支持多字节字符编码的字符集。