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