为了彻底解决python转码的问题,我们可能需要在程序启动的时候加上下面两句:
reload(sys)
sys.setdefaultencoding("utf-8")
但是如果我们以这样的方式来启动:
python test.py >> test.log
那么会看到这样的错误:
IOError: [Errno 9] Bad file descriptor: '<fdopen>'
究其原因 是 reload(sys)导致,因为这个函数会重置 sys.stdout
【如何解决】
a = sys.stdout
reload(sys)
sys.setdefaultencoding("utf-8")
也就是只要我们在reload方法之前引用一下sys.stdout就可以了,很神奇吧,说明python的reload会检查sys下面的变量的引用计数。
reload(sys)
sys.setdefaultencoding("utf-8")
但是如果我们以这样的方式来启动:
python test.py >> test.log
那么会看到这样的错误:
IOError: [Errno 9] Bad file descriptor: '<fdopen>'
究其原因 是 reload(sys)导致,因为这个函数会重置 sys.stdout
【如何解决】
a = sys.stdout
reload(sys)
sys.setdefaultencoding("utf-8")
也就是只要我们在reload方法之前引用一下sys.stdout就可以了,很神奇吧,说明python的reload会检查sys下面的变量的引用计数。