Django使用正确的编码上传和处理CSV文件

时间:2013-01-31 16:07:56

标签: python django

我尝试在我的Django项目中上传和处理CSV文件,但是我收到编码错误,CSV文件是在带有excel的mac上创建的。

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 个答案:

答案 0 :(得分:4)

  1. Python的csv模块带来了很多unicode麻烦。 Try unicodecsv instead
  2. Excel on Mac导出为CSV,编码损坏。不要使用它,使用像LibreOffice这样有用的东西(有一个更好的CSV导出选项)。
  3. 处理用户文件时:要么确保文件始终以UTF-8编码,只能解码为UTF-8(推荐)或使用chardet等编码检测库。