Конвертировать из шестнадцатеричной строки в юникод

Как я могу преобразовать '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)
13.10.2009 09:09:16
2 ОТВЕТА
РЕШЕНИЕ

Unicode разработан, чтобы быть совместимым с Latin-1, вы можете использовать это и просто декодировать строку байта:

In [2]: unhexlify('dead').decode('latin1')
Out[2]: u'\xde\xad'
5
13.10.2009 09:25:35

Посмотрите этот Python Unicode с практическими рекомендациями , и используйте что-то похожее на:

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

или

unicode('\x80abc', errors='ignore')
1
13.10.2009 09:17:59