UnicodeDecodeError: 'utf-8' codec bayt kodunu çözemiyor

İşte benim kodum,

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

bu kodu her çalıştırdığımda aşağıdaki hatayı veriyor:

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

Bunu çözmeye çalıştım ve open() işlevine fazladan bir parametre ekledim, kod şöyle görünüyor;

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

Ancak yine aynı hatayı veriyor. O zaman ne yapmalıyım! Lütfen yardım edin.

Çözüm

Mark Ransom tarafından önerildiği gibi, bu sorun için doğru kodlamayı buldum. Kodlama "ISO-8859-1" idi, bu nedenle open("u.item", encoding="utf-8") yerine open('u.item', encoding = "ISO-8859-1") yazmak sorunu çözecektir.

Yorumlar (6)

Dosyanız aslında utf-8 kodlu veri içermiyor, başka bir kodlama içeriyor. Bu kodlamanın ne olduğunu bulun ve open çağrısında bunu kullanın.

Örneğin Windows-1252 kodlamasında 0xe9, é karakteri olacaktır.

Yorumlar (2)

Bunları arayan biri varsa, bu Python 3'te bir CSV dosyasını dönüştürmek için bir örnektir:

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