MemoryObject
的函数。它正在读取大多数文件,但对于一个文件,它正在引发UnicodeDecodeError
。这是我的代码
def read(file):
"""
:param file: File Memory Object (submitted from POST)
:return: File Iterable object
"""
file = StringIO(file.read().decode())
return csv.DictReader(file, delimiter=',')
完全错误如下:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 0: invalid continuation byte
open()
来简化文件,但是我已经简化了MemoryObject,所以不能使用open()
答案 0 :(得分:1)
您的file
已经以二进制模式打开:decode
是bytes
而非str
的一种方法。
对于您的问题,encoding
的{{1}}和errors
参数的作用与bytes.decode
相同。您可以应用适当的编码,也可以忽略错误:
open
请注意,您必须知道编码,或者通过忽略它们来抑制错误。您可以尝试不同的编码来找到有效的编码,但是最后您必须知道数据的含义。