为什么每个人都使用latin1?

Dav*_*801 6 php mysql phpmyadmin internationalization

有人刚才说utf8有1到3个字节的可变长度编码.

那么为什么每个人仍然使用latin1?如果在utf8中存储相同的内容,它也是1个字节,但utf8的优点是它可以适应更大的字符集.

  • 他们是一个隐藏的理由每个人都使用latin1?
  • 使用utf8与latin1有什么缺点?

Gum*_*mbo 9

ISO 8859-1是HTTP等多个标准(至少对于文本内容)的(至少是事实上的)默认字符编码:

当发送方未提供显式字符集参数时,"文本"类型的媒体子类型被定义为在通过HTTP接收时具有默认字符集值"ISO-8859-1".除"ISO-8859-1"或其子集之外的字符集中的数据必须用适当的字符集值标记.

选择ISO 8859-1的原因可能是因为它是US-ASCII的超集,它是基于互联网的技术的基本特征集.随着万维网在瑞士日内瓦的欧洲核子研究中心发明和开发,这可能是为剩下的128个角色选择西欧语言字符的原因.

开发Unicode标准时,ISO 8859-1的字符集用作Unicode字符集(通用字符集)的基础,因此前256个字符与ISO 8859-1的字符相同.这可能是由于ISO 8859-1对Web的重要性,因为它已经是许多技术的标准字符编码.

现在讨论ISO 8859-1与UTF-8相反的优点,我们需要查看底层字符集和用于编码这些字符的编码方案:

  • ISO 8859-1包含256个字符,其中每个字符的字符点直接映射到其二进制表示.因此123 10编码为01111011 2.

  • UTF-8使用前缀可变长度编码方案,其中前缀表示字长.UTF-8用于编码通用字符集的字符,其编码方案可编码1,048,576个字符.前128个字符需要1个字节,0x80-0x7FF中的字符需要2个字节,0x800-0xFFFF中的字符需要3个字节,0x10000-0x1FFFFF中的字符需要4个字节.

因此,一方面可编码字符的范围与另一方面编码字的长度有所不同.

因此,"正确"字符编码的选择取决于需要:如果您只需要ISO 8859-1(或US-ASCII作为其子集)的字符,请使用ISO 8859-1,因为它只需要一个字节与UTF-8相对的每个字符,其中字符128-255需要两个字节.如果您需要比ISO 8859-1更多或更多的字符,请使用UTF-8.