代码之家  ›  专栏  ›  技术社区  ›  Metropolis

为什么MySQL使用拉丁语-瑞典语-ci作为默认值?

  •  50
  • Metropolis  · 技术社区  · 14 年前

    有人知道为什么mysql默认使用拉丁语瑞典语吗?在我看来,UTF-8更兼容,对吧?

    选择违约通常是因为它们是最好的通用选择,但在这种情况下,似乎并不是它们所做的。

    4 回复  |  直到 6 年前
        1
  •  39
  •   Pekka    14 年前

    据我所见,Latin1是pre-multibyte times中的默认字符集,它看起来像是连续的,可能是因为向下兼容(例如,对于没有指定排序规则的较旧的create语句)。

    here :

    4做了什么

    MySQL4.0(和早期版本)只支持字符集和排序规则的组合概念,以及单字节字符编码(在服务器级别指定)。默认为 latin1 ,它对应于拉丁语1的字符集和 latin1_swedish_ci 在MySQL 4.1中。

    至于为什么 瑞典的 我只能猜测这是因为mysql ab是瑞典人的。我看不出选择这个排序规则的任何其他原因,它附带了一些特定的排序特性(我认为是z之后的),但它们根本不接近国际标准。

        2
  •  6
  •   cameck    6 年前

    Latin1是默认字符集。MySQL的Latin1与 Windows CP1252字符集。这意味着它与 官方ISO 8859-1或IANA(互联网号码分配机构) Latin1,但IANA Latin1处理0x80之间的代码点 为这些位置指定字符。

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

    可能有助于你理解原因。

        3
  •  2
  •   AndreKR    14 年前

    与多字节编码相比,使用单字节编码具有一些优势,例如,以字节为单位的字符串长度等于以字符为单位的字符串长度。所以,如果您使用子字符串这样的函数,那么您的意思是字符还是字节并不是直观地清楚的。同样,出于同样的原因,它需要对内部代码进行很大的修改,以支持多字节编码。

        4
  •  0
  •   CodesInChaos    14 年前

    这类最奇怪的特征是历史性的。很久以前他们就这么做了,现在他们不能不破坏一些应用程序就改变它,这取决于他们的行为。

    也许那时utf8并不流行。或者可能MySQL不支持多个字节在字符上编码的字符集。