UTF-8和ISO-8859-1有什么区别?

UTF-8和ISO-8859-1有什么区别?

UTF-8是一种可以表示任何Unicode字符的多字节编码。 ISO 8859-1是一个单字节编码,可以表示前256个Unicode字符。 两者的编码方式完全相同。

维基百科解释得非常好: UTF-8和Latin-1 (ISO-8859-1)。 前者是可变长度编码,后者是单字节固定长度编码。 Latin-1只编码Unicode字符集的前256个编码点,而UTF-8编码所有编码点。 在物理编码级别,只有编码点0-127得到相同的编码; 码点128-255与UTF-8变成2字节的序列不同,而它们是带有拉丁-1的单个字节。

UTF

UTF是一个多字节编码scheme家族,可以代表可以代表高达2 ^ 31 [约20亿]个字符的Unicode代码点。 UTF-8是一个灵活的编码系统,使用1到4个字节来表示前2 ^ 25 [约3200万]个码点。

长话短说:在127以下的代码点/顺序表示的任何字符,也就是7位安全的ASCII由与大多数其他单字节编码相同的1字节序列表示。 任何代码点高于127的字符都是由两个或多个字节组成的序列表示的,编码的特殊性最好在这里解释。

ISO-8859

ISO-8859是一组单字节编码scheme,用于表示可以在127到255范围内表示的字母。这些不同的字母被定义为ISO-8859- n格式的“部分”,这是最常见的这些可能是ISO-8859-1又名'Latin-1'。 与UTF-8一样,无论使用哪种编码types,7位安全的ASCII都不受影响。

这种编码scheme的缺点是不能适应包含多于128个符号的语言,或者一次安全地显示多个符号族。 而且,ISO-8859编码已经不受UTF的兴起。 负责该工作的国际标准化组织“工作组”已于2004年解散,将维护工作交给了其母公司小组委员会。

ISO-8859-1是上世纪80年代的传统标准。 它只能表示256个字符,所以只适合西方的一些语言。 即使对于许多支持的语言,也有一些字符丢失。 如果您使用此编码创build文本文件并尝试复制/粘贴一些中文字符,您将看到奇怪的结果。 换句话说,不要使用它。 Unicode已经占领了世界,而UTF-8几乎是现在的标准,除非你有一些遗留的原因(比如需要与所有东西兼容的HTTP标头)。

我研究这个问题的理由是从哪个angular度来看,它们是以什么方式相容的。 Latin1字符集(iso-8859)与100%兼容,可以存储在utf8数据存储区中。 所有ascii和扩展ASCII字符将被存储为单字节。

换句话说,从utf8到Latin1字符集可能工作也可能不工作。 如果有任何2字节的字符(扩展字符255以外的字符),它们将不会存储在Latin1数据存储中。