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.
Comme suggéré par Mark Ransom, j'ai trouvé le bon encodage pour ce problème. L'encodage était "ISO-8859-1" ;, donc remplacer open("u.item" ;, encoding="utf-8" ;)
par open('u.item' ;, encoding = "ISO-8859-1" ;)
résoudra le problème.
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 é
.
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