Django 上传并处理正确编码的 CSV 文件
我在我的Django项目中尝试上传和处理一个CSV文件,但遇到了编码错误。这个CSV文件是在Mac上用Excel创建的。
reader = csv.reader(request.FILES['file'].read().splitlines(), delimiter=";")
if withheader:
reader.next()
data = [[field.decode('utf-8') for field in row] for row in reader]
用这个代码示例我得到了一个错误:http://puu.sh/1VmXc
如果我使用latin-1解码,我又遇到了另一个“错误”……
data = [[field.decode('latin-1') for field in row] for row in reader]
结果是:v¾gmontere,而正确的结果应该是:vægmontere
有没有人知道该怎么做?我试了很多方法!
1 个回答
4
- Python 2的
csv
模块在处理unicode时会遇到很多麻烦。可以试试unicodecsv
,或者直接使用Python 3。 - 在Mac上,Excel导出的CSV文件编码有问题。别用它,推荐使用像LibreOffice这样的工具,它的CSV导出功能更好,还有更多选项。
- 处理用户文件时:要么确保文件都是用UTF-8编码的,然后只解码为UTF-8(这是推荐的做法),要么使用像chardet这样的编码检测库。