UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)調べてみるとttyのときだけ親切に色々やってくれているんだけど、 redirectとかpipeだとそれが機能しなくなり、内部で持ってるunicode表現文字をデフォルトのasciiにエンコードしようとして失敗する、 ということのようだ。 ここにいい方法がのってた。
import sys import codecs sys.stdout = codecs.getwriter('utf8')(sys.stdout)としておくと以降のstdoutへの出力が常にutf8で自動的にencodeされるようになる。