Преобразование байта в str python2.7

У меня есть словарь

k ={'Creator': '\xfe\xff\x00M\x00i\x00c\x00r\x00o\x00s\x00o\x00f\x00t\x00\xae\x00 \x00O\x00f\x00f\x00i\x00c\x00e\x00 \x00W\x00o\x00r\x00d\x00 \x002\x000\x000\x007'}

который содержит метаданные PDF. В свойствах PDF Creator является Microsoft Office Word 2007. Я не могу преобразовать k['Creator'] в "Microsoft Office Word 2007", как в этом случае.

2 ответа

Решение

Это дает необходимую строку.

Код:

>>> print(k['Creator'].decode('utf16','ignore')).encode('utf-8') 
Microsoft® Office Word 2007 
>>> type((k['Creator'].decode('utf16','ignore')).encode('utf-8')) 
<type 'str'>

Данные кодируются в UTF-16. Расшифруйте это:

print k['Creator'].decode('utf16')

Это производит unicode значение; Ваша консоль может или не может обрабатывать не ASCII ® кодовая точка, которая включает в себя.

Демо-версия:

>>> k ={'Creator': '\xfe\xff\x00M\x00i\x00c\x00r\x00o\x00s\x00o\x00f\x00t\x00\xae\x00 \x00O\x00f\x00f\x00i\x00c\x00e\x00 \x00W\x00o\x00r\x00d\x00 \x002\x000\x000\x007'}
>>> print k['Creator'].decode('utf16')
Microsoft® Office Word 2007
Другие вопросы по тегам