5

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

誰が何をすべきか知っていますか?..私はたくさん試しました!

4

1 に答える 1

4
  1. Python 2csvモジュールには、多くのUnicodeの面倒が伴います。代わりに試すunicodecsvか、Python3を使用してください。
  2. Mac上のExcelは、エンコードが壊れた状態でCSVにエクスポートします。使用せず、代わりにLibreOfficeなどの便利なものを使用してください(オプション付きのCSVエクスポートがはるかに優れています)。
  3. ユーザーファイルを処理する場合:ファイルが一貫してUTF-8でエンコードされ、UTF-8にのみデコードされることを確認するか(推奨)、chardetなどのエンコード検出ライブラリを使用します。
于 2013-02-01T00:11:15.873 に答える