読者です 読者をやめる 読者になる 読者になる

なにも わからぬ

パソコンとプログラミング関係をメモっていきたい

LANG=C環境下のPython3でUnicodeEncodeError

非Xのコンソールで日本語メッセージが文字化けするのでサーバのlinuxLANG=Cにしていたが、pythonUTF-8のファイルを読もうとすると

UnicodeEncodeError: 'ascii' codec can't encode characters in position 45-49: ordinal not in range(128)

のようなエラーが出て困っていた。print()などでUTF-8文字列を出力しなくても

with open(filepath, encoding="utf-8") as fp:

の行でエラーが出てる。でググったらPythonでLANG=Cのときのエンコーディングの注意ということのよう。LANG=Cのまま解決するにはリンク先の通りだが、自分の場合はそもそもLANG=en_US.UTF-8で済む話であった。