コンテンツにスキップ

Top

UnicodeEncodeError

UnicodeEncodeError は print文とかで日本語の文字列を結合しようとしたときに出てくるエラー。

1
UnicodeEncodeError: 'ascii' codec can't encode characters in position 17-19: ordinal not in range(128)

日本語はASCIIじゃないよ!的な感じ。
対策は2つ。

TextIOWrapper を使う

Pythonのコードの先頭のほうに、以下を記載すればOK!

1
2
3
4
import io
import sys

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

環境変数を設定する

環境変数 PYTHONIOENCODING に utf-8 と設定する。

1
$ export PYTHONIOENCODING=utf-8

これで UnicodeEncodeError エラーが発生しなくなる。

実行時のみしていするのもできる。

1
$ PYTHONIOENCODING=utf-8 python3 hoge.py

以上。