تحويل من سلسلة Hex إلى Unicode
سؤال
كيف يمكنني تحويل 'dead'
سلسلة إلى سلسلة Unicode u'\xde\xad'
?
فعل هذا:
from binascii import unhexlify
out = ''.join(x for x in [unhexlify('de'), unhexlify('ad')])
يخلق أ <type 'str'>
سلسلة '\xde\xad'
محاولة استخدام unicode.join () مثل هذا:
from binascii import unhexlify
out = ''.join(x for x in [u'', unhexlify('de'), unhexlify('ad')])
النتائج في خطأ:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xde in position 0: ordinal not in range(128)
المحلول
تم تصميم Unicode ليكون متوافقًا مع Latin-1 ، يمكنك استخدام ذلك وفك تشفير البايت:
In [2]: unhexlify('dead').decode('latin1')
Out[2]: u'\xde\xad'
نصائح أخرى
يرى هذا python unicode, ، واستخدم شيئًا أقرب إلى:
unicode('\x80abc', errors='replace')
أو
unicode('\x80abc', errors='ignore')
لا تنتمي إلى StackOverflow