簡體   English   中英

'utf-8'編解碼器無法解碼位置170的字節0x8a:無效的起始字節

[英]'utf-8' codec can't decode byte 0x8a in position 170: invalid start byte

我正在嘗試這樣做:

fh = request.FILES['csv']
fh = io.StringIO(fh.read().decode())
reader = csv.DictReader(fh, delimiter=";")

這總是會因標題錯誤而失敗,我為此花費了將近8個小時。

這是我的理解:

我正在使用python3,因此文件fh以字節為單位。 我將其編碼為字符串,並通過StringIO將其放入內存。

csv.DictReader()嘗試將其作為字典讀入內存。 它在這里失敗:

在此處輸入圖片說明

也嘗試了io.StringIO(fh.read().decode('utf-8')) ,但同樣的錯誤。

我想念什么? :/

該錯誤是因為文件中包含一些非ASCII字符,並且無法對其進行編碼/解碼。 避免此錯誤的一種簡單方法是使用如下的encode()/ decode()函數對此類字符串進行編碼/解碼(如果a是具有非ASCII字符的字符串):

a.decode('utf-8')

另外,您可以嘗試按以下方式打開文件:

with open('filename', 'r', encoding = 'utf-8') as f: your code using f as file pointer

如果您的文件是二進制文件,請使用“ rb”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM