将十六进制字符串转换为Unicode
我该如何把字符串 '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 个回答
1
可以查看这个关于Python Unicode的指南,然后使用类似下面的代码:
unicode('\x80abc', errors='replace')
或者
unicode('\x80abc', errors='ignore')
5
Unicode的设计是为了和Latin-1兼容,你可以使用它,然后简单地解码这个字节串:
In [2]: unhexlify('dead').decode('latin1')
Out[2]: u'\xde\xad'