Преобразование из шестнадцатеричной строки в Юникод

StackOverflow https://stackoverflow.com/questions/1559065

Вопрос

Как я могу преобразовать 'dead' строка в строку Юникода 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)
Это было полезно?

Решение

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

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

Другие советы

Видеть это руководство по использованию Юникод Python, и используйте что-то вроде:

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

или

unicode('\x80abc', errors='ignore')
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top