繁体   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