【发布时间】:2020-01-07 07:43:29
【问题描述】:
UTF8 中的 '\x80' 占用多少字节?
我在 Python 中编写:
>>> '\x80'.encode('utf8')
b'\xc2\x80'
这表明 '\x80' 转换为 两个 字节。
另外,反过来:
>>> b'\x80'.decode()
>>> Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte
这是否意味着 byte '\x80' 本身在 UTF-8 中没有(字符)含义?
【问题讨论】:
-
注意:UTF-8 是一种编码,独立于 Python。字节字符串是字节列表,因此如果您只定义一个字节,它将占用一个字节(+ python 的开销(例如类型信息,长度)。python 中的字符串有自己的表示形式(这取决于 python 版本),但您可能应该忽略此类实现细节。字符串上的
len给出了unicode codepoints的数量(而不是字节数)。