2009-10-13 13 views
2

Comment puis-je convertir la chaîne 'dead' en chaîne unicode u'\xde\xad'?Conversion d'une chaîne hexadécimale en unicode

Faire ceci:

from binascii import unhexlify 
out = ''.join(x for x in [unhexlify('de'), unhexlify('ad')]) 

crée une chaîne <type 'str'>'\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) 

Répondre

5

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' 
1

Voir this Python unicode how-to, et utiliser quelque chose comme:

unicode('\x80abc', errors='replace') 

ou

unicode('\x80abc', errors='ignore')