Преобразование байта в 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