python の print でエラーになる時

最終更新日: 公開日: 2018年08月

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')
 

Contact

ご質問等ありましたら,お手数ですが弊社の個人情報保護方針をお読み頂いた上でフォームからお願い致します.
※このページと無関係な内容のセールスはご遠慮ください.

 
   
contact
Pagetop