UTF](https://en.wikipedia.org/wiki/UTF)是一个多字节编码方案系列,可以代表[Unicode](https://en.wikipedia.org/wiki/Unicode)码点,最多可代表2^31[约20亿]个字符。 UTF-8](https://en.wikipedia.org/wiki/UTF-8)是一个灵活的编码系统,使用1到4个字节来表示前2^21[约200万]个码点。
长话短说。 任何码点/末尾表示在127以下的字符,也就是7位安全ASCII码,与大多数其他单字节编码一样,用1字节序列表示。 任何码点高于127的字符由两个或更多的字节序列表示,编码的特殊性最好解释这里。
ISO-8859是一个单字节编码方案系列,用于表示可在127至255范围内表示的字母。 这些不同的字母被定义为"部件"。 格式ISO-8859-n,其中最熟悉的可能是ISO-8859-1又名'Latin-1'。 与UTF-8一样,无论使用哪种编码族,7位安全的ASCII都不受影响。
这种编码方案的缺点是无法适应由超过128个符号组成的语言,或者无法同时安全地显示一个以上的符号族。 同样,随着UTF的兴起,ISO-8859编码已经不受欢迎了。 ISO的"工作组"。 负责它的工作小组已于2004年解散,将维护工作留给了它的上级小组委员会。
ASCII码。 7位 128个码点。
ISO-8859-1。 8859 -1: 8位. 256个码点。
UTF-8:8-32位(1-4字节)。 8 -32位(1 -4个字节)。 1,112,064个码点。
ISO-8859-1和UTF-8都能向后兼容ASCII码,但UTF-8不能向后兼容ISO-8859-1。
#!/usr/bin/env python3
c = chr(0xa9)
print(c)
print(c.encode('utf-8'))
print(c.encode('iso-8859-1'))
产出:
©
b'\xc2\xa9'
b'\xa9'