LoginSignup
0
2

More than 1 year has passed since last update.

django-import-exportにてpythonで作成した日本語を含むcsvのインポートの際のエラーと応急対策

Last updated at Posted at 2022-01-18

問題

主題の通り、pythonで作成した日本語を含むcsv(utf-8)で読み込ませると以下のようなエラーが起こる場合がある

Imported file has a wrong encoding: 'cp932' codec can't decode byte 0xef in position 0: illegal multibyte sequence

いろいろ文字コードを変えてみたが同様のエラーが発生

対策

もっと良い方法があるとは思いますが、以下に自分が実践した応急的な対策を紹介します

csv書き込みの際はutf-8(BOM付き)

pythonにてcsvを作成する際

with open(csv_path, 'w', encoding="utf_8_sig") as f:
    writer = csv.writer(f)
    writer.writerows(records)

と、このようにencodingをutf-8(BOM付きのほうが良い)に指定

Windowsにてエクセルで読み込む際BOM付きでしか正常に読み込まれない

utf-8の場合、BOM付きは'_sig'をつけるようです

BOMに関してはこちらを参照してください

.xlsxで保存

作成したcsvをエクセルで起動し .xlsxファイルで保存します

インポート

django-import-exportで xlsx をインポート

環境

Python 3.9.7

Django 3.1.2

django-import-export 2.7.1

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2