Python プログラムの出力をパイプ処理するとき、Python インタープリターはエンコーディングについて混乱し、None に設定します。これは、次のようなプログラムを意味します。
# -*- coding: utf-8 -*-
print u"åäö"
通常の実行では問題なく動作しますが、次の場合に失敗します。
UnicodeEncodeError: 'ascii' コーデックは位置 0 の文字 u'\xa0' をエンコードできません: 序数が範囲外です (128)
パイプ シーケンスで使用する場合。
配管時にこれを機能させる最良の方法は何ですか? シェル/ファイルシステム/使用しているエンコーディングを使用するように指示できますか?
これまでに見た提案は、site.py を直接変更するか、このハックを使用して defaultencoding をハードコーディングすることです。
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
print u"åäö"
配管を機能させるより良い方法はありますか?