2009年2月27日金曜日

[Python] 標準出力の文字化け対策 in Windows

今まで無視していた標準出力の文字化けを直す。

Windowsの標準出力で文字化けが起こる場合、
基本的にはShift_JIS(cp932)にエンコードすればOK。

ちなみにうちの開発環境はeclipse。

[コード例] 
keyword = "図書館戦争" 
print keyword.encode('cp932')

[出力]
図書館戦争

無事出力☆
でも、sitecustomize.py、defaultencoding、Eclipseワークスペース、
ソースファイル全てのエンコードにutf-8を設定しているのに
何でこんなことになるんだろう??

答えはWindowsのMS-DOSで解決。
Windowsの標準コードはShift_JISなので、
標準出力についてはそっちに依存してたんだと納得。

C\:> chcp
現在のコード ページ: 932

実際、pythonの標準入力・出力系の文字コードを確認してみると、
cp932であることが確認できた。

>>> sys.stdin.encoding
'cp932'
>>> sys.stdout.encoding
'cp932'
>>> sys.stderr.encoding
'cp932'

内部でどうなっているかは分からないけど、
今後入出力はcp932で行なう事を意識する。

0 件のコメント: