UnicodeDecodeError: 'utf-8' codec can't decodificar byte

Aqui está o meu código,

for line in open('u.item'):
#read each line

sempre que eu executar este código, ele dá o seguinte erro:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 2892: invalid continuation byte

Eu tentei resolver isso e adicionar um parâmetro extra em open(), o código é parecido;

for line in open('u.item', encoding='utf-8'):
#read each line

Mas mais uma vez dá o mesmo erro. O que devo fazer então! Por favor, ajude-me.

Solução

Como sugerido por Mark Ransom, encontrei a codificação certa para esse problema. A codificação foi "ISO-8859-1" portanto substituir open("u.item", encoding="utf-8") por open('u.item', encoding = "ISO-8859-1") resolverá o problema.

Comentários (6)

O seu ficheiro não'na verdade não contém dados codificados utf-8, ele contém alguma outra codificação. Descubra o que é essa codificação e utilize-a na chamada open.

Na codificação do Windows-1252, por exemplo, o 0xe9 seria o caracter é.

Comentários (2)

Se alguém procurar por estes, este é um exemplo para converter um ficheiro CSV em Python 3:

try:
    inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"')
except IOError:
    pass
Comentários (0)