同じプロジェクトに Windows と Linux のマシンを使用しています。Windows での stdin のデフォルトのエンコーディングは cp1252 で、Linux では utf-8 です。
すべてをutf-8に変更したいと思います。出来ますか?どうすればいいですか?
この質問は Python 2 に関するものです。Python 3 については、「Python 3: 標準入力エンコーディングを指定する方法」を参照してください。
同じプロジェクトに Windows と Linux のマシンを使用しています。Windows での stdin のデフォルトのエンコーディングは cp1252 で、Linux では utf-8 です。
すべてをutf-8に変更したいと思います。出来ますか?どうすればいいですか?
この質問は Python 2 に関するものです。Python 3 については、「Python 3: 標準入力エンコーディングを指定する方法」を参照してください。
これは古い質問ですが、参考までに。
UTF-8
から読み取るにはstdin
、次を使用します。
UTF8Reader = codecs.getreader('utf8')
sys.stdin = UTF8Reader(sys.stdin)
# Then, e.g.:
for _ in sys.stdin:
print _.strip()
に書き込むUTF-8
にstdout
は、次を使用します。
UTF8Writer = codecs.getwriter('utf8')
sys.stdout = UTF8Writer(sys.stdout)
# Then, e.g.:
print 'Anything'
これは、印刷時に暗黙のエンコーディングに依存しないことで実現できます。いずれにせよ、それに依存しないことは良い考えです。暗黙のエンコーディングは、標準出力に出力するときと、標準出力が端末に接続されているときにのみ使用されます。
より良いアプローチは、どこでも使用し、またはどこでもunicode
使用することです。次の例を使用して、Unicode 文字列を UTF-8 に自動的にエンコードするオブジェクトをラップします。codecs.open
codecs.getwriter
sys.stdout
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
ただし、これはどこでもユニコードを使用している場合にのみ機能します。したがって、どこでもユニコードを使用してください。本当に、どこでも。