Django 上传并处理正确编码的 CSV 文件

5 投票
1 回答
2538 浏览
提问于 2025-04-17 14:20

我在我的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
  1. Python 2的csv模块在处理unicode时会遇到很多麻烦。可以试试unicodecsv,或者直接使用Python 3。
  2. 在Mac上,Excel导出的CSV文件编码有问题。别用它,推荐使用像LibreOffice这样的工具,它的CSV导出功能更好,还有更多选项。
  3. 处理用户文件时:要么确保文件都是用UTF-8编码的,然后只解码为UTF-8(这是推荐的做法),要么使用像chardet这样的编码检测库。

撰写回答