Περισσότερα
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
Αλλά και πάλι δίνει το ίδιο σφάλμα. Τι πρέπει να κάνω τότε! Παρακαλώ βοηθήστε με.
178
3
Όπως πρότεινε ο Mark Ransom, βρήκα τη σωστή κωδικοποίηση για το πρόβλημα αυτό. Η κωδικοποίηση ήταν "ISO-8859-1", οπότε η αντικατάσταση του
open("u.item", encoding="utf-8")
με τοopen('u.item', encoding = "ISO-8859-1")
θα λύσει το πρόβλημα.Το αρχείο σας δεν περιέχει στην πραγματικότητα δεδομένα με κωδικοποίηση utf-8, αλλά κάποια άλλη κωδικοποίηση. Βρείτε ποια είναι αυτή η κωδικοποίηση και χρησιμοποιήστε την στην κλήση
open
.Στην κωδικοποίηση Windows-1252, για παράδειγμα, το
0xe9
θα ήταν ο χαρακτήραςé
.Αν κάποιος ψάχνει για αυτά, αυτό είναι ένα παράδειγμα για τη μετατροπή ενός αρχείου CSV στην Python 3: