2013-01-31 32 views
2

我嘗試上傳和處理在我的Django項目的CSV文件的文件,但我得到一個編碼錯誤,是在用Excel的Mac創建的CSV文件..Django的上傳和處理CSV用正確的編碼

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

任何人都知道該怎麼辦? ..我已經嘗試了很多!

+0

這可能有所幫助:http://stackoverflow.com/questions/11270703/unicode-characters-not-showing-properly – PepperoniPizza

回答

2
  1. Python的csv模塊帶有許多unicode麻煩。 Try unicodecsv instead
  2. Mac上的Excel導出到帶有破損編碼的CSV。不要使用它,請使用像LibreOffice這樣有用的東西(具有更好的帶有選項的CSV導出)。
  3. 處理用戶文件時:要麼確保文件始終以UTF-8編碼,只能解碼爲UTF-8(推薦)或使用編碼檢測庫(如chardet)。
+0

哦,上帝......這似乎是在MS的Mac Excel是問題。 .. 非常感謝! – pkdkk