Καλησπέρα σας!
Δουλεύω πάνω σε ένα application με Django.
Σε αυτό το app λοιπόν υπάρχει επιλογή να "κατεβάσει" τα e-mail του από οποιοδήποτε λογαριασμό θέλει.
Στο σημείο λοιπόν που θέλω να πάρω τα συννημένα του mail χρησιμοποιώ τη μεθοδο get_filename() για να παρω το όνομα του αρχείου.
Αυτό μου επιστρέφει ενα string αυτής της μορφής:
'=?UTF-8?B?zrXOs86zz4HOsc+Gzr8xLmRvYw==?='
Μετα από πολύ κόπο κατάφερα να το "γυρίσω" σε utf-8 με τον παρακάτω κώδικα:
filename = part.get_filename()
if filename[:11] == '=?KOI8-R?B?':
filename = base64.b64decode(filename[11:]).decode('KOI8-R')
if filename[:10] == '=?UTF-8?B?':
filename = base64.b64decode(filename[10:])
/*Εδώ περνάω τα filenames σε μία λίστα ,
για κάθε email ξεχωριστά πάντα γιατί εμφανίζω
σε ενα template λίστα των email με τα
attachements τους.*/
filenames_list.append(filename)
Αυτό μου επιστρέφει ενα string αυτής της μορφής:
'\xce\xb5\xce\xb3\xce\xb3\xcf\x81\xce\xb1\xcf\x86\xce\xbf1.doc'
Εχω προσπαθήσει να ξανακάνω encode,decode με διάφορες κωδικοποιήσεις (utf-8,iso-8859-7, ακομη και latin1) αλλά μάταια.
Καμία ιδέα? Μήπως το κοιτάω εντέλως λάθος?
Ευχαριστώ εκ των προτέρων!