UnicodeDecodeError: 'utf-8' kodek ne more dekodirati bajta

Tukaj je moja koda,

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

vsakič, ko zaženem to kodo, se pojavi naslednja napaka:

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

Poskušal sem to rešiti in dodati dodaten parameter v open(), koda je videti takole;

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

Vendar se spet pojavi ista napaka. Kaj naj potem storim! Prosim za pomoč.

Rešitev

Kot je predlagal Mark Ransom, sem našel pravo kodiranje za to težavo. Kodiranje je bilo "ISO-8859-1", zato bo zamenjava open("u.item", encoding="utf-8") z open('u.item', encoding = "ISO-8859-1") rešila problem.

Komentarji (6)

Vaša datoteka dejansko ne vsebuje podatkov v kodiranju utf-8, temveč neko drugo kodiranje. Ugotovite, katero je to kodiranje, in ga uporabite v klicu open.

V kodiranju Windows-1252 bi bil na primer 0xe9 znak é.

Komentarji (2)

Če jih kdo išče, je to primer za pretvorbo datoteke CSV v Pythonu 3:

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