import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8') #改变标准输出的默认编码
直接将以上代码放在你的代码中,简单粗暴!
运行后不报错了,但是居然有好多乱码(英文显示正常,中文则显示乱码)!!又一阵折腾后发现是控制台的问题,具体来说就是我在cmd下运行该脚本会有乱码,而在IDLE下运行却很正常。
由此我推测是cmd不能很好地兼容utf8,而IDLE就可以,甚至在IDLE下运行,连“改变标准输出的默认编码”都不用,因为它默认就是utf8。如果一定要在cmd下运行,那就改一下编码,比如我换成“gb18030”,就能正常显示了:
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030') #改变标准输出的默认编码
最后,附上一些常用的和中文有关的编码的名称,分别赋值给encoding,就可以看到不同的效果了:
更新----------------------------------------------
上述以后又遇到SyntaxError: Non-UTF-8 code starting with ‘\xb8’ in file C:/Users/Acheng/AppData/qiuzu/qiuzu/1.py on line 7, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
编码不对。
解:首行加上coding:utf-8。必须是首行!!