2015-05-12 3 views
1
data = [item for item in contents.encode('utf-8').split('\r\n')] 

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 1807: ordinal not in range(128)питон не может декодировать огибающая

Почему не может его кодировать его, когда я кодировать его?

+2

В нем говорится, что он не может * декодировать * его. Что такое 'содержание'? Если это байтовая строка, вам нужно использовать 'decode', чтобы преобразовать ее в unicode. – BrenBarn

ответ

2

Вы должны использовать Python 2. .encode может кодировать только строки Unicode. Если вы попробуете .encode байтовую строку, Python 2 неявно попытается использовать .decode байтовую строку для Unicode, используя кодек ascii по умолчанию, прежде чем использовать явный .encode('utf-8').

contents уже является байтовой строкой. Если эта строка байтов закодирована в UTF-8, вместо этого используйте .decode('utf-8'), чтобы преобразовать ее в строку Unicode.

Смежные вопросы