В строке по-прежнему отображаются искаженные символы после преобразования кодировки из ascii в utf-8 - PullRequest
0 голосов
/ 22 марта 2019

Я преобразовал строку

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 Ответ

2 голосов
/ 22 марта 2019

У вас есть строка quopri (указана для печати) .

Чтобы получить текстовую строку, необходимо:

>>> 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...