for text, enc in email.Header.decode_header(subj): print enc, text 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

for text, enc in email.Header.decode_header(subj): print enc, text

Поиск

Разбор поля заголовка

 

В примере выше поле Subject формировалось с помощью email.Header.make_header().Разбор поля поможет провести другая функция:email.Header.decode_header().Эта функция возвращает список кортежей,в каждом из них указан кусочек текста поля и кодировка,в которой этот текст был задан.Следующий пример поможет понять суть дела:

 

subj = """=?koi8-r?Q?=FC=D4=CF_=D0=D2=C9=CD=C5=D2_=CF=DE=C5=CE=D8_=C4=CC=C9?= =?koi8-r?Q?=CE=CE=CF=C7=CF_=28164_bytes=29_=D0=CF=CC=D1_=D3_=D4?= =?koi8-r?Q?=C5=CD=CF=CA_=D3=CF=CF=C2=DD=C5=CE=C9=D1=2E_=EF=CE=CF_?= =?koi8-r?Q?=D2=C1=DA=C2=C9=CC=CF=D3=D8_=CE=C1_=CB=D5=D3=CB=C9_=D7?= =?koi8-r?Q?_=D3=CF=CF=C2=DD=C5=CE=C9=C9=2C_=CE=CF_=CC=C5=C7=CB=CF?= =?koi8-r?Q?_=D3=CF=C2=C9=D2=C1=C5=D4=D3=D1_=D7_=D4=C5=CB=D3=D4_?= =?koi8-r?Q?=D3_=D0=CF=CD=CF=DD=D8=C0_email=2EHeader=2Edecode=5Fheader?= =?koi8-r?Q?=28=29?="""

 

import email.Header

for text, enc in email.Header.decode_header(subj): print enc, text

 

В результате будет выведено:

 

koi8-r Это пример очень длинного (164 bytes) поля с темой сообщения. Оно разбилось на куски в сообщении, но легко собирается в текст

 

с помощью email.Header.decode_header()

 

Следует заметить,что кодировку можно не указывать:

 

>>> email.Header.decode_header("simple text") [('simple text', None)]

>>> email.Header.decode_header("пример") [('\xd0\xd2\xc9\xcd\xc5\xd2', None)]

>>> email.Header.decode_header("=?KOI8-R?Q?=D0=D2=CF_?=Linux") [('\xd0\xd2\xcf ', 'koi8-r'), ('Linux', None)]

 

Если в первом случае можно подразумеватьus-ascii,то во втором случае о кодировке придется догадываться:вот почему в электронных письмах нельзя просто так использовать восьмибитные кодировки.В третьем примере русские буквы закодированы,а латинские-нет,поэтому в результате email.Header.decode_header() список из двух пар.

 

В общем случае представить поле сообщения можно только вUnicode.Создание функции для такого преобразования предлагается в качестве упражнения.

 



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 61; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.008 с.)