从十六进制字符串转换为unicode

时间:2009-10-13 09:09:16

标签: python unicode utf-8 encode decode

如何将'dead'字符串转换为unicode字符串u'\xde\xad'

这样做:

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

创建<type 'str'>字符串'\xde\xad'

尝试使用Unicode.join(),如下所示:

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

导致错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xde in position 0: ordinal not in range(128)

2 个答案:

答案 0 :(得分:5)

Unicode旨在与Latin-1兼容,您可以使用它并简单地解码bytestring:

In [2]: unhexlify('dead').decode('latin1')
Out[2]: u'\xde\xad'

答案 1 :(得分:1)

请参阅this Python unicode how-to,并使用类似于:

的内容
unicode('\x80abc', errors='replace')

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