سؤال

لقد استخدمت Imaplib من Python لسحب البريد من حساب Gmail ... لكنني تلقيت بريدًا إلكترونيًا مع هذا النص النصي المربك:

> RGF0ZSBldCBoZXVyZTogICAgICAgICAgICAgICAgICAgICAgICAgICAyMi8wOC8yMDEwIDE0
> OjMzOjAzIEdNVCBVbmtub3duDQpQcsOpbm9tOiAgICAgICAgICAgICAgICAgICAgICAgICAg
> ICAgICAgICAgamFjaW50bw0KTm9tOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
> ICAgICBjYXJ2YWxobw0KRS1NYWlsOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg

من يمكنه مساعدتي في قراءة هذا الملف من بريدي الإلكتروني ...

شكرًا

لو

هل كانت مفيدة؟

المحلول

يبدو مثل base64. في Python يمكنك استخدام إما base64.b64decode أو str.decode('base64').

message = '''
RGF0ZSBldCBoZXVyZTogICAgICAgICAgICAgICAgICAgICAgICAgICAyMi8wOC8yMDEwIDE0
OjMzOjAzIEdNVCBVbmtub3duDQpQcsOpbm9tOiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgamFjaW50bw0KTm9tOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYXJ2YWxobw0KRS1NYWlsOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
'''

print message.decode('base64')

نتيجة:

Date et heure:                           22/08/2010 14:33:03 GMT Unknown
Prénom:                                   jacinto
Nom:                                     carvalho
E-Mail:

ال é يبدو أنه غير صحيح. يبدو أن النص قد تم ترميزه في UTF-8 ، لذلك تحتاج أيضًا إلى فك تشفير UTF-8:

print message.decode('base64').decode('utf-8')

نتيجة:

...
Prénom:
...

شيء آخر يجب أن تكون على دراية به هو أن هناك متغيرات مختلفة من ترميزات BASE64 تختلف في الرموبين اللذين يستخدمان للقيمة 62 و 63. باستخدام base64.b64decode يمكنك تحديد هاتين الحرفين إذا لم تنجح الإعدادات الافتراضية بالنسبة لك.

نصائح أخرى

العلامة صحيحة في الغالب ، لكنها أيضًا UTF-8 مشفرة كما يتضح من \uc3a9 في "Prénom".

(وأحاول معرفة سبب حصولني على فك تشفير مناسب وعلامة لنفس الرمز ، لكن هذه مشكلة أخرى.)

انها قاعدة 64 UTF-8. هذا النص بالذات يقول:

Date et heure:                           22/08/2010 14:33:03 GMT Unknown
Prénom:                                   jacinto
Nom:                                     carvalho
E-Mail:                                
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top