如何将编码错误的字符串转换为字节?

时间:2019-03-06 14:57:00

标签: python python-3.x character-encoding

我有utf-8字符串,其形式为“РїРsРј” ...-使用Python 3字符串。如何解码(以获取正确的字符串)?

正如我从错误消息中看到的那样,我只能从字节数组转换字符串,但是如何获取呢?我尝试过

bytes(str, 'ascii', errors='ignore')

因此它不应更改现有的字节值,但会删除所有“不正确的”字符(我想是因为它们的代码> = 128)。

示例字符串包含俄语'пом'...

1 个答案:

答案 0 :(得分:2)

似乎您有一个已被编码为 UTF-8 的字符串,然后已被解码为 cp1251

>>> s =  'пом'
>>> s.encode('utf-8').decode('cp1251')
'РїРѕРј'

您可以通过反转操作来获取原始字符串。

>>> e = 'РїРѕРј'
>>> e.encode('cp1251').decode('utf-8')
'пом'

如果要将mojibake字符串编码为字节而不丢失信息,请使用 backslashreplace 错误处理程序。

>>> e.encode('ascii', errors='backslashreplace')
b'\\u0420\\u0457\\u0420\\u0455\\u0420\\u0458'