3

重複の可能性:
Pythonでstdoutを配管するときに正しいエンコーディングを設定する

以下は、Pythonシェル(2.7.3)で期待どおりに実行されます

for i in range(999):
    print i, unichr(i)

ファイル(asd.py)に保存し、シェルで実行します

$ ./asd.py

も動作しますが

$ ./asd.py > asd.txt

与える:

Traceback (most recent call last):
  File "./asd.py", line 3, in <module>
    print i, unichr(i)
UnicodeEncodeError: 'ascii' codec can't encode character u'\x80' in position 0: ordinal not in range(128)

何故ですか?それを回避する方法は?

4

1 に答える 1

2

このコードを試して、

#!/usr/bin/python
for i in range(999):
   print i, unichr(i).encode('utf-8')
于 2012-12-12T11:26:25.507 に答える