【问题标题】:best character set and collation for European based website欧洲网站的最佳字符集和排序规则
【发布时间】:2011-03-09 02:07:20
【问题描述】:

我将构建一个可供欧洲各地人们使用的应用程序。我需要知道哪种排序规则和字符集最适合用户输入的数据。或者我应该为每种语言制作一个单独的表格。一篇解释这一点的文章会很棒。

谢谢:)

【问题讨论】:

    标签: sql mysql


    【解决方案1】:

    字符集,毫无疑问,UTF-8。整理,我不确定是否有一个好的答案,但您可能想阅读this report

    【讨论】:

    • 很大,但我会读它:) 谢谢。我相信 unicode 确实有利于性能,但是当您面对不同的字符时,这并不是优先考虑的问题。
    • 排序规则控制排序和搜索如何处理特殊字符,例如它们是“标准化”(È > E)还是被视为单独的实体。
    • @Pekka:我知道排序规则是什么,但没有“最佳”——没有一种排序规则适用于所有欧洲语言。我就是这个意思。
    • @Amadan 是的。我的 cmets 是针对 OP 进行澄清的,而不是你,对不起,我没有指出这一点。
    【解决方案2】:

    Unicode 是一个非常大的字符集,包括几乎所有语言的几乎所有字符。

    有多种方法可以将 Unicode 文本存储为字节序列 - 这些方法称为 编码。所有 Unicode 编码(嗯,所有完整的 Unicode 编码)都可以将所有 Unicode 文本以某种格式存储为字节序列 - 但任何给定文本占用的字节数将取决于所使用的编码。

    UTF-8 是一种 Unicode 编码,针对英语和其他使用拉丁字母表之外的字符很少的语言进行了优化。 UTF-16 是一种 Unicode 编码,可能更适合各种欧洲语言的文本。 Java 和 .NET 将内存中的所有文本(String 类)存储为 UTF-16 编码的 Unicode。

    【讨论】:

    • 完美,非常感谢。
    • 如果您仅限于欧洲,UTF-8 在空间方面优于 UTF-16。只有西里尔文国家会使用许多多字节,在欧洲它们是少数。在所有其他国家/地区,基本 ASCII (
    • 另外,你在这里分心:对于大多数实际目的(包括,我强烈怀疑,OP),字符集和字符编码之间的区别是微不足道的。这个问题可以改写为:在 MySQL 中为CHARACTER SET 选项添加什么。如果你输入UTF8,MySQL 会正确地假设你的意思是 Unicode 集,UTF-8 编码。
    • -1 您对什么是编码的解释很好,但您的 UTF-8 声明不正确。 UTF-8 不仅限于欧洲字符——您可能是指 ISO-8859-1。 UTF-8 是一种可变长度编码,据我所知,它能够映射现有的所有或大多数字符集。 UTF-8 是网站和电子邮件公认的标准编码,因为它向后兼容 ASCII。 mySQL 还不支持 UTF-16。此外,答案不涉及更复杂的 collat​​ion 问题。
    • @Pekka:Justice 没有说 UTF-8 将限制欧洲字符,他说它是优化的。但是,只有 7 位 ASCII 字符存储为一个字节。 Ohter 拉丁文(和西里尔文)字符用 2 个字节编码。许多亚洲字符需要 3 个字节。
    猜你喜欢
    • 2011-03-27
    • 2012-10-26
    • 2011-10-22
    • 2023-03-17
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    相关资源
    最近更新 更多