Conversione da stringa esadecimale a Unicode
Domanda
Come posso convertire la stringa 'dead'
a un u'\xde\xad'
stringa Unicode?
In questo modo:
from binascii import unhexlify
out = ''.join(x for x in [unhexlify('de'), unhexlify('ad')])
crea una stringa <type 'str'>
'\xde\xad'
Il tentativo di utilizzare l'Unicode.join () in questo modo:
from binascii import unhexlify
out = ''.join(x for x in [u'', unhexlify('de'), unhexlify('ad')])
genera un errore:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xde in position 0: ordinal not in range(128)
Soluzione
Unicode è stato progettato per essere compatibile con il latino-1, è possibile utilizzare tale e semplicemente decodificare il bytestring:
In [2]: unhexlify('dead').decode('latin1')
Out[2]: u'\xde\xad'
Altri suggerimenti
questa Python unicode how-to , e usare qualcosa di simile a:
unicode('\x80abc', errors='replace')
o
unicode('\x80abc', errors='ignore')
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow