python の print でエラーになる時
python での話.
コマンドラインで実行して,日本語が print で出力されるようなプログラムを書いていた.
その際はエラーは出ないのだが,crontab でそのスクリプトを実行すると,
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
のようなエラーが出ていた.
原因は漢字コードなのだが,crontab だと sys.stdout.encoding が US-ASCII になってしまって,print でエラーが出ていたのだ.
Python3でUnicodeDecodeErrorに遭遇したときのTODOリストを参考にさせてもらって解決.
import sys
import io
sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8')
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')
ご質問等ありましたら,お手数ですが弊社の個人情報保護方針をお読み頂いた上でフォームからお願い致します.
※このページと無関係な内容のセールスはご遠慮ください.