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

ご質問等ありましたら,お手数ですが弊社の個人情報保護方針をお読み頂いた上でフォームからお願い致します.

 
   
Chrome 拡張機能 PageSpeed Insights SEO WordPress Youtube お問い合わせフォーム アナリティクス アンケートフォーム サーチコンソール セミナー タグマネージャー データベース ヒアリング プラグイン ページ閲覧解析 マーケティング メール配信 リッチリザルト レスポンシブ対応 ログ解析 勉強会 商品企画 営業 営業力 営業支援システム 実装 検索順位 検索順位チェックツール 追跡 開発者ツール
contact
Pagetop