我在python3中初始化一个utf-8编码字符串:
bytes('\xc2', encoding="utf-8", errors="strict")
但在写出来之后,我得到了两个字节!
>>> s = bytes('\xc2', encoding="utf-8", errors="strict")
>>> s
b'\xc3\x82'
这个附加字节来自哪里?为什么我不能编码任何最多254的十六进制值(我可以理解255可能保留扩展到utf-16)?
答案 0 :(得分:0)
Unicode代码点"\xc2"
(也可以写为"Â"
)在使用utf-8
编码进行编码时长度为两个字节。如果您希望它是单字节b'\xc2'
,您可能希望使用不同的编码,例如"latin-1"
:
>>> s = bytes("\xc2", encoding="latin-1", errors="strict")
>>> s
b'\xc2'
如果您使用文字直接创建"\xc2"
区域,则无需使用bytes
构造函数将其转换为bytes
实例。只需使用文字上的b
前缀直接创建字节:
s = b"\xc2"