Python 3.7から導入されたUTF-8モードは、Pythonがテキストファイルを開く際のデフォルトエンコーディングをUTF-8に設定する機能です。このモードを有効にするには、環境変数PYTHONUTF8=1
を設定するか、コマンドラインオプション-X utf8
を追加します。
UTF-8モードが有効になると、次のようなエンコーディングが適用されます:
– テキストファイルを読み書きする時のデフォルトのエンコーディング = UTF-8
– 標準入出力のエンコーディング
– 標準入出力がコンソールのとき = UTF-16でWriteConsoleW等を呼ぶ
– 標準入出力がコンソールでない時 = UTF-8
– 子プロセスとのPIPE = UTF-8
このモードを使用すると、一貫してUTF-8を使用することができます。ただし、cp932を使うコマンドを利用する&パイプをテキストモードで開くときにはエンコーディングに”mbcs”か”cp932″を指定する必要があります。
UTF-8モードはまだあまり知られていませんが、PythonのデフォルトエンコーディングをUTF-8にすることで、多くのエンコーディングに関する問題を解決することができます。初心者向けにPythonの環境構築記事を書かれる方は、ぜひUTF-8モードを紹介することを検討してみてください。