ما هو ترميز هذا النص؟
سؤال
لقد استخدمت 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: