سؤال

انا إستعملت طفرات لقراءة بيانات تعريف MP3 ، نظرًا لأن علامة ID3 تتم قراءة في Unicode ولكن في الواقع يتم ترميز GBK. كيف تصحح هذا في بيثون؟

audio = EasyID3(name)
title = audio["title"][0] 
print title
print repr(title)

ينتج عنه

µ±Äã¹Âµ¥Äã»áÏëÆðË­
u'\xb5\xb1\xc4\xe3\xb9\xc2\xb5\xa5\xc4\xe3\xbb\xe1\xcf\xeb\xc6\xf0\xcb\xad'

ولكن في الواقع يجب أن يكون في GBK (صينية).

当你孤单你会想起谁
هل كانت مفيدة؟

المحلول

يبدو أن السلسلة قد تم فك تشفيرها إلى Unicode باستخدام الترميز الخاطئ (Latin-1).

تحتاج إلى تشفيرها على سلسلة بايت ثم فك تشفيرها مرة أخرى إلى Unicode باستخدام الترميز الصحيح.

title = u'\xb5\xb1\xc4\xe3\xb9\xc2\xb5\xa5\xc4\xe3\xbb\xe1\xcf\xeb\xc6\xf0\xcb\xad'
print title.encode('latin-1').decode('gbk')
当你孤单你会想起谁

نصائح أخرى

يبدو أنه ترميز تلقائي latin1. لإصلاح:

>>> title = u'\xb5\xb1\xc4\xe3\xb9\xc2\xb5\xa5\xc4\xe3\xbb\xe1\xcf\xeb\xc6\xf0\xcb\xad'
>>> print title.encode('latin1').decode('GBK')
当你孤单你会想起谁

تم اختباره في Python 2.x ولكن يجب أن يعمل بشكل جيد في 3 أيضًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top