## 事象 [[UTF-8]]のファイルとして以下2ファイルがある。 `hoge.txt` ```txt ほげ ``` `main.py` ```python with open("./hoge.txt") as f: print(f.readline()) ``` これを実行すると、デコード時のエンコーディングが[[CP932]]と推測されてしまい、失敗する。[[CP932]]と推測されるのは[[Windows]]のデフォルトエンコーディングだから。 ```console $ python --version Python 3.11.0 $ python main.py Traceback (most recent call last): File "C:\Users\syoum\tmp\utf8py\main.py", line 2, in <module> print(f.readline()) ^^^^^^^^^^^^ UnicodeDecodeError: 'cp932' codec can't decode byte 0x92 in position 5: illegal multibyte sequence ``` これは以下のように`encoding`を指定すれば解決する ```python with open("./hoge.txt", encoding="utf-8") as f: print(f.readline()) ``` ```console $ python main.py ほげ ``` だが、明示的にエンコーディングを指定せず、[[UTF-8]]を使いたいケースがある。 ## 解決方法 環境変数 [[PYTHONUTF8]]に1を設定する。 ```powershell $env:PYTHONUTF8=1 ``` ## 参考 - [Windows 上の Python で UTF\-8 をデフォルトにする \- Qiita](https://qiita.com/methane/items/9a19ddf615089b071e71)