【发布时间】:2014-08-24 03:09:38
【问题描述】:
我正在处理 Python 3 中的以下字节字符串。
b'\xf9', b'\x02', b'\x03', b'\xf0', b'y', b'\x02', b'\x03', b'S', b'\x00', b't', b'\x00', b'a'
这对我来说是一堆非常令人困惑的字节,因为它来自根据 MIDI 协议发出信息的微控制器。
我的第一个问题是关于结尾处的字母。大多数其他bytes 都是真正的十六进制值(即我知道b'\x00' 应该是一个空字符)。但是,应该是大写 S 的大写 S 显示为这样(b'S')。根据我看过的 ASCII / HEX 图表,大写 S 应该是 x53(这是 b'\x53'.decode('utf-8') 返回的内容。
但是,在 Python 中,当我执行 b'S'.decode('utf-8') 时,它也会返回一个人头 S,(怎么可能两者兼有?)
此外,某些字节(例如b'\xf9')确实是要转义的(这就是为什么它们有\x 但是,我在尝试解码它们时遇到了问题。运行[byteString].decode('utf-8') 时在上述字符串的较长版本上,我收到以下错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf9 in position 0: invalid start byte
这些字节不应该被跳过或打印吗?谢谢
【问题讨论】:
标签: python unicode utf-8 decode encode