Convertir chaîne hexadécimale à unicode
Question
Comment puis-je convertir la chaîne de 'dead'
à une u'\xde\xad'
chaîne unicode?
Faire ceci:
from binascii import unhexlify
out = ''.join(x for x in [unhexlify('de'), unhexlify('ad')])
crée une <type 'str'>
chaîne de '\xde\xad'
Essayer d'utiliser la Unicode.join () comme ceci:
from binascii import unhexlify
out = ''.join(x for x in [u'', unhexlify('de'), unhexlify('ad')])
provoque une erreur:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xde in position 0: ordinal not in range(128)
La solution
Unicode est conçu pour être compatible avec le latin-1, vous pouvez l'utiliser et de décoder simplement le bytestring:
In [2]: unhexlify('dead').decode('latin1')
Out[2]: u'\xde\xad'
Autres conseils
Voir ce Python unicode how-to , et utiliser quelque chose comme:
unicode('\x80abc', errors='replace')
ou
unicode('\x80abc', errors='ignore')
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow