我有utf-8字符串,其形式为“РїРsРј” ...-使用Python 3字符串。如何解码(以获取正确的字符串)?
正如我从错误消息中看到的那样,我只能从字节数组转换字符串,但是如何获取呢?我尝试过
bytes(str, 'ascii', errors='ignore')
因此它不应更改现有的字节值,但会删除所有“不正确的”字符(我想是因为它们的代码> = 128)。
示例字符串包含俄语'пом'...
答案 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'