21

同じプロジェクトに Windows と Linux のマシンを使用しています。Windows での stdin のデフォルトのエンコーディングは cp1252 で、Linux では utf-8 です。

すべてをutf-8に変更したいと思います。出来ますか?どうすればいいですか?

この質問は Python 2 に関するものです。Python 3 については、「Python 3: 標準入力エンコーディングを指定する方法」を参照してください。

4

4 に答える 4

18

これは古い質問ですが、参考までに。

UTF-8から読み取るにはstdin、次を使用します。

UTF8Reader = codecs.getreader('utf8')
sys.stdin = UTF8Reader(sys.stdin)

# Then, e.g.:
for _ in sys.stdin:
    print _.strip()

に書き込むUTF-8stdoutは、次を使用します。

UTF8Writer = codecs.getwriter('utf8')
sys.stdout = UTF8Writer(sys.stdout)

# Then, e.g.:
print 'Anything'
于 2014-12-11T14:58:04.967 に答える
18

これは、印刷時に暗黙のエンコーディングに依存しないことで実現できます。いずれにせよ、それに依存しないことは良い考えです。暗黙のエンコーディングは、標準出力に出力するときと、標準出力が端末に接続されているときにのみ使用されます。

より良いアプローチは、どこでも使用し、またはどこでもunicode使用することです。次の例を使用して、Unicode 文字列を UTF-8 に自動的にエンコードするオブジェクトをラップします。codecs.opencodecs.getwritersys.stdout

sys.stdout = codecs.getwriter('utf-8')(sys.stdout)

ただし、これはどこでもユニコードを使用している場合にのみ機能します。したがって、どこでもユニコードを使用してください。本当に、どこでも。

于 2010-04-29T14:12:18.647 に答える