Εδώ είναι ο κώδικάς μου,
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")
θα λύσει το πρόβλημα.
Το αρχείο σας δεν περιέχει στην πραγματικότητα δεδομένα με κωδικοποίηση utf-8, αλλά κάποια άλλη κωδικοποίηση. Βρείτε ποια είναι αυτή η κωδικοποίηση και χρησιμοποιήστε την στην κλήση open
.
Στην κωδικοποίηση Windows-1252, για παράδειγμα, το 0xe9
θα ήταν ο χαρακτήρας é
.
Αν κάποιος ψάχνει για αυτά, αυτό είναι ένα παράδειγμα για τη μετατροπή ενός αρχείου CSV στην Python 3:
try:
inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"')
except IOError:
pass