为什么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不支持多字节字符编码的字符集。