3

可能重复:
在 python 中管道 stdout 时设置正确的编码

以下按预期在python shell(2.7.3)中运行

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

将其保存在文件(asd.py)中,并在 shell 中运行

$ ./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 回答