Converter de string hexadecida em unicode
Pergunta
Como posso converter o 'dead'
string para uma string unicode u'\xde\xad'
?
Fazendo isso:
from binascii import unhexlify
out = ''.join(x for x in [unhexlify('de'), unhexlify('ad')])
cria um <type 'str'>
corda '\xde\xad'
Tentando usar o unicode.join () como este:
from binascii import unhexlify
out = ''.join(x for x in [u'', unhexlify('de'), unhexlify('ad')])
resulta em um erro:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xde in position 0: ordinal not in range(128)
Solução
O Unicode foi projetado para ser compatível com o Latin-1, você pode usar isso e simplesmente decodificar o bytestring:
In [2]: unhexlify('dead').decode('latin1')
Out[2]: u'\xde\xad'
Outras dicas
Ver Este python unicode como fazer, e use algo semelhante a:
unicode('\x80abc', errors='replace')
ou
unicode('\x80abc', errors='ignore')
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow