Идентификатор имени ISO 8859-1 не декодируется

Я извлекаю файлы из MIME-сообщений в python milter и запускаю проблемы с файлами, названными как таковые:

=? ISO-8859-1? Q? Certificado = 5FZonificaci = F3N = 5F2010 = 2Epdf? =

Я не могу расшифровать это имя в UTF. Чтобы решить предыдущую проблему ISO-8859-1, я начал передавать все имена файлов для этой функции:

def unicodeConvert(self, fname): normalized = False while normalized == False: try: fname = unicodedata.normalize('NFKD', unicode(fname, 'utf-8')).encode('ascii', 'ignore') normalized = True except UnicodeDecodeError: fname = fname.decode('iso-8859-1')#.encode('utf-8') normalized = True except UnicodeError: fname = unicode(fname.content.strip(codecs.BOM_UTF8), 'utf-8') normalized = True except TypeError: fname = fname.encode('utf-8') return fname 

который работал, пока я не добрался до этого имени файла.

Идеи оцениваются, как всегда.

Ваша строка кодируется с использованием формата Quoted-printable для заголовков MIME. Модуль email.header обрабатывает это для вас:

 >>> from email.header import decode_header >>> bytes, encoding = decode_header('=?ISO-8859-1?Q?Certificado=5FZonificaci=F3n=5F2010=2Epdf?=')[0] >>> bytes.decode(encoding) u'Certificado_Zonificaci\xf3n_2010.pdf'