## 事象
[[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)