2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Pythonのopen関数でUnicodeDecodeErrorが出ないようにする

Posted at

問題点

Windows上でPythonを使っている場合、open関数でファイルを開いたときにUnicodeDecodeErrorが出ることがあります。
原因はWindowsがデフォルトでcp932でファイルをエンコーディングしてしまうことのようで、下記のようにopen関数にencodingの指定をすればエラー解消できます。

sample.py
open('sample.csv', encoding='utf-8')

問題はライブラリパッケージ内でこのエラーが出た時です。自力でライブラリを書き換えたくはないので、上記以外の方法が必要です。

一番簡単なのはシステム環境変数にPYTHONUTF8を1で登録すれば良いらしいです。ただしこの方法だとプログラムを実行する環境ごとに設定が必要で、ちょっと面倒です。

最終的にプログラムのエントリポイントで下記を実行して、環境変数を書き換えることにしました。

sample.py
import os

os.environ.setdefault('PYTHONUTF8', '1')

これで何か不都合あれば再調査しようと思います。

参考文献

下記を参考にさせて頂きました。
環境変数を書き換えたくない場合にはこの方法が良いのかもしれません。
【Windows】黒魔術で Python が CP932 関係で UnicodeDecodeError を出さないように強制する

2
0
1

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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?