将编码从ascii转换为utf-8后,字符串仍然显示乱码

时间:2019-03-22 20:20:06

标签: python email encoding

我转换了一个字符串

body = 'e n=C3=A3o =C3=A9 o =C3=BAnico autor a poder aceit=C3=A1-la'

使用

bodys = bodys.encode('utf-8')

但我仍然看到乱码"=C3=A9"

这是通过IMapClient模块从电子邮件正文解析的字符串。 你知道是否有一种转换为可读字符的方法吗?

非常感谢!

1 个答案:

答案 0 :(得分:2)

您在那里有一个quopri (quoted printable)字符串。

要获取其中的文本字符串,您必须:

>>> import codecs
>>> s = 'e n=C3=A3o =C3=A9 o =C3=BAnico autor a poder aceit=C3=A1-la'
>>> s_binary = s.encode('UTF-8')
>>> s_binary
b'e n=C3=A3o =C3=A9 o =C3=BAnico autor a poder aceit=C3=A1-la'
>>> s_utf8 = codecs.decode(s_binary, 'quopri')
>>> s_utf8
b'e n\xc3\xa3o \xc3\xa9 o \xc3\xbanico autor a poder aceit\xc3\xa1-la'
>>> s_text = s_utf8.decode('UTF-8')
>>> s_text
'e não é o único autor a poder aceitá-la'

或将它们放在一起:

>>> codecs.decode(s.encode('UTF-8'), 'quopri').decode('UTF-8')
'e não é o único autor a poder aceitá-la'