Pythonで端末のエンコーディング取得はgetpreferredencoding
でできます。
>>> import sys
>>> locale.getpreferredencoding()
'cp932'
「あいうえお」と表示するスクリプト(sample.py)
# -*- coding: UTF-8 -*-
s = u'あいうえお'
print s
コマンドプロンプトから
> python.exe sample.py
あいうえお
出力をファイルにリダイレクト
> python.exe sample.py > sample.txt
Traceback (most recent call last):
File "a.py", line 3, in <module>
print s
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
エンコーディングを取得するように修正
# -*- coding: UTF-8 -*-
import locale
encoding = locale.getpreferredencoding()
s = u'あいうえお'
print s.encode(encoding)
問題なく表示できます。
> python.exe sample.py
あいうえお