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

Εδώ είναι ο κώδικάς μου,

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

κάθε φορά που τρέχω αυτόν τον κώδικα, μου δίνει το ακόλουθο σφάλμα:

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

Προσπάθησα να το λύσω αυτό και να προσθέσω μια επιπλέον παράμετρο στην open(), ο κώδικας μοιάζει ως εξής,

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

Αλλά και πάλι δίνει το ίδιο σφάλμα. Τι πρέπει να κάνω τότε! Παρακαλώ βοηθήστε με.

Λύση

Όπως πρότεινε ο Mark Ransom, βρήκα τη σωστή κωδικοποίηση για το πρόβλημα αυτό. Η κωδικοποίηση ήταν "ISO-8859-1", οπότε η αντικατάσταση του open("u.item", encoding="utf-8") με το open('u.item', encoding = "ISO-8859-1") θα λύσει το πρόβλημα.

Σχόλια (6)

Το αρχείο σας δεν περιέχει στην πραγματικότητα δεδομένα με κωδικοποίηση utf-8, αλλά κάποια άλλη κωδικοποίηση. Βρείτε ποια είναι αυτή η κωδικοποίηση και χρησιμοποιήστε την στην κλήση open.

Στην κωδικοποίηση Windows-1252, για παράδειγμα, το 0xe9 θα ήταν ο χαρακτήρας é.

Σχόλια (2)

Αν κάποιος ψάχνει για αυτά, αυτό είναι ένα παράδειγμα για τη μετατροπή ενός αρχείου CSV στην Python 3:

try:
    inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"')
except IOError:
    pass
Σχόλια (0)