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)
È stato utile?

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
scroll top