じゃあ具体的にどうすればいいのかという話だけど、お勧めは次の方法だ。
まず次のように標準出力を適当なエンコーダで包む。
import codecs
Writer = codecs.getwriter(sys.getfilesystemencoding())
stdout = Writer(sys.stdout)
その上で print 文をすべて次のように書く。
print >>stdout, '"total","%s",%d' % (root, dirsize[root])
この例ではリダイレクトしているか否かに関わらず sys.getfilesystemencoding() の返す
エンコーディングでエンコードするようにしている。このエンコーディングは、俺の知る限り
標準出力がリダイレクトされていない場合の sys.stdout.encoding と一致している。
sys.getfilesystemencoding() を使う代わりに、例えば cp932 に決めうちしちゃうとか、
コマンドライン引数で出力エンコーディングを指定するようにするといった方法も考えられる。
標準出力リダイレクト時のエンコーディングをどうするかは用途に強く依存する問題なので
こればかりはプログラムを書く人(つまり197さん)が決めるしかない。
ニュース
- 【サッカーW杯】混戦G組はエジプトが耐えて2位通過!イランは“歓喜のAT逆転弾”が無情オフサイド [鉄チーズ烏★]
- 【サッカー】敗退危機・韓国が命拾い ウルグアイ敗戦で“3位集団”7番手キープ 「スペイン助けて」の願い届く… 上位8位争い大激戦★2 [冬月記者★]
- 【サッカー】敗退危機・韓国が命拾い ウルグアイ敗戦で“3位集団”7番手キープ 「スペイン助けて」の願い届く… 上位8位争い大激戦★3 [冬月記者★]
- 国民民主に公認取り消された娘が自死、母親も追うように…党内を震撼させた玉木代表 文春砲に「長文釈明」 [少考さん★]
- イチロー氏、サッカーW杯は「1日4試合見る」 体力に驚愕…自身がプレーなら「5分持たないです」 [阿弥陀ヶ峰★]
- 【サッカー】森保監督、続投へ 三笘ら主力を欠く中、2大会連続の決勝T進出… 将来は海外挑戦視野も3大会連続12年の長期政権へ★3 [冬月記者★]
- 【高市悲報】JR「計画運休で終日運休にしたけど只の雨なので運転再開します。ごめんなさい😭」 [616817505]
- 麻生太郎「総理に文句言ってる奴、140日休まず働いたことあんの?」 [237216734]
- 【悲報】サッカー韓国代表、W杯の敗退がほぼ確定するwwwwwwwwwwwwwwwwww [253992206]
- 年下の女の子と結婚したい
- 【悲報】30代、あらゆる趣味に飽き始めてしまう…😨 どーすんのこれ😱 [589647274]
- ホリエモン「俺はリアルバリューの株主じゃなくてただの演者。『すげえトークン』は言わされただけで松井健とも面識がない」 [153736977]