PythonミルターのMIMEメッセージからファイルを抽出していて、次のような名前のファイルで問題が発生しています。
=?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
このファイル名に到達するまで機能していました。
アイデアはいつものように高く評価されています。