Windows環境のPythonでデフォルトの文字コードをUTF-8にする設定【備忘録】

お疲れ様です。

Windows環境ではデフォルトの文字コードのデフォルトがshift-jis(cp932)になります。
これが原因でエラーが起こることもあり、対処方法の1つとしてデフォルトの文字コードをutf-8に変更する方法を調べたのでメモを残します。 一部のライブラリだと内部でテキストベースのファイルを読み込むことがあるので、その際にエラーが起こるということがたまにあります。 私はpycocotoolsのjsonファイルの読み込みでこの問題にぶち当たりました…。

以下のサイトが参考になります。(というか知りたかったことがすべて書かれていました。) qiita.com

結論、デフォルトの文字コードをutf-8に変更するためには環境変数でPYTHONUTF8=1を設定することです。
Windows環境ならターミナル上でsetコマンドで設定するのが簡単かなと思います。 恒常的にデフォルトをutf-8にしたい場合はコントロールパネルの「環境変数を編集」で追加しておくのでも良いです。

set PYTHONUTF8=1


注意点として、こちらの設定はPythonプログラムの実行前に変更しないと反映されません。
例えば、下記のようにプログラム内でPYTHONUTF8を追加や編集した場合はデフォルトがshift-jisのままになります。

import os

os.environ["PYTHONUTF8"] = "1"

また今回はWindows環境なのでLinux環境のように実行時のコマンドで特定の環境変数を指定することはできません。

PYTHONUTF8=1 python program.py


備忘録としては以上です。
挙動確認に使用したプログラムはGitHubにも残しておきますので、実際に挙動を見てみたい場合はどうぞ。

github.com