UnicodeDecodeError : 'utf-8&#39 ; codec can't decode byte (erreur)

Voici mon code,

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

chaque fois que j'exécute ce code, l'erreur suivante se produit :

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

J'ai essayé de résoudre ce problème en ajoutant un paramètre supplémentaire dans open(), le code ressemble à ceci ;

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

Mais la même erreur s'est produite. Que dois-je faire alors ? Merci de m'aider.

Solution

Comme suggéré par Mark Ransom, j'ai trouvé le bon encodage pour ce problème. L'encodage était "ISO-8859-1&quot ;, donc remplacer open("u.item&quot ;, encoding="utf-8&quot ;) par open('u.item&#39 ;, encoding = "ISO-8859-1&quot ;) résoudra le problème.

Commentaires (6)

Votre fichier ne contient pas réellement de données codées en utf-8, il contient un autre codage. Déterminez quel est cet encodage et utilisez-le dans l'appel open.

Dans l'encodage Windows-1252 par exemple, le 0xe9 serait le caractère é.

Commentaires (2)

Si quelqu'un les recherche, voici un exemple de conversion d'un fichier CSV en Python 3 :

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