为什么我不应该用这个来启动我的所有python 程序,有充分的理由吗?像这样执行 exec 时有什么特别的丢失吗?
#!/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
关于 PYTHONIOENCODING有60 个问题,所以我想这是一个常见问题,但如果你不知道,这样做是因为sys.stdout.encoding == None
那时你只能打印 ascii 字符,所以 egprint "åäö"
会抛出异常..
编辑当 stdout 是管道时,这发生在我身上;python encoding.py|cat
将编码设置为无
另一个解决方案是更改标准输出的编解码器, sys.stdout = codecs.getwriter('utf8')(sys.stdout)
我猜这是正确的答案,尽管对该问题的评论。