Converting string to bytes gives UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa0 in position 4: invalid start byte

Converting string to bytes gives UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa0 in position 4: invalid start byte

我有一个 python 模块需要从 py2 适配到 py3。问题是,它接受来自 C++ 模块的 std::string 作为结构的一部分,这在 py2 中是可读的,因为默认的 py2 字符串类型是 bytes。但是,当尝试使用 py3 启动它时,每当我尝试对它执行任何操作时,它都会尝试使用 utf8 解释该字符串。

基本上,消息反序列化器需要一个类似字节的对象,但得到的是一个普通的、尽管不可读的字符串。

例如,这行不通:

msg_raw_data = bytes(msg.raw_data, encoding='latin-1')
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa0 in position 4: invalid start byte

不幸的是,我无法更改字符串进入模块的方式,但我不需要将该字符串作为实际有效字符串读取 - 我只需要从中提取一个 bytes 对象而不用丢弃任何值。有办法吗?

由于缺少更好的选择,不得不要求 C++ 团队将他们的 python 绑定更改为 return 一个 bytes 包装器,而不是他们的 std::string边.