我不应该用这个开始我所有的 python程序吗?做这样的高手时有什么特别的遗失吗?
#!/usr/bin/python
import os, sys
if sys.stdout.encoding == None:
os.putenv("PYTHONIOENCODING",'UTF-8')
os.execv(sys.executable,['python']+sys.argv)
print sys.stdout.encoding
Run Code Online (Sandbox Code Playgroud)
关于PYTHONIOENCODING有60个问题所以我想这是一个常见的问题,但是如果你不知道,这是完成的,因为sys.stdout.encoding == None那时你只能打印ascii字符,所以例如print "åäö"会抛出异常..
编辑当stdout是管道时,这种情况发生在我身上; python encoding.py|cat将编码设置为无
另一个解决方案是更改stdout 的编解码器,sys.stdout = codecs.getwriter('utf8')(sys.stdout)我猜这是正确的答案,反映了对该问题的评论.