Не удается правильно декодировать строку - PullRequest
0 голосов
/ 14 августа 2011

У меня есть строка чтения файла .txt, которая выглядит примерно так:

str='\x00I\x00S\x00T\x00A\x00\r\x00\n\x00[\x00/\x00B\x00O\x00D\x00Y\x00]\x00\r\x00\n\x00'

Содержимое файла написано на португальском языке, и оно не позволяет мне кодировать в utf-8.

Когда я делаю print(str), все получается правильно, но когда я пытаюсь что-то делать с персонажами, я получаю следующую ошибку: UnicodeDecodeError: 'utf8' codec can't decode byte....Что мне нужно сделать, чтобы получить содержимое строки, чтобы я мог работать с ней?Спасибо.

Редактировать: на самом деле оператор print работает неправильно, так как некоторые акценты заменяются на ? в выражении print.

1 Ответ

4 голосов
/ 14 августа 2011

Вам необходимо сначала декодировать его в unicode.

>>> '\x00I\x00S\x00T\x00A\x00\r\x00\n\x00[\x00/\x00B\x00O\x00D\x00Y\x00]\x00\r\x00\n'.decode('utf-16be')
u'ISTA\r\n[/BODY]\r\n'

Если это из файла, тогда используйте codecs.open() вместо open(), передавая соответствующую кодировку.

...