Sublime Text 3运行Python时控制台无法输出中文的解决方法
想学Python,发现需要一个IDE来跑自己写的代码。Mac上有很多选择,自己最喜欢CodeRunner,轻量简单功能强大。就在准备掏钱的时候,发现Sublime Text 3也能打造成Python的IDE,只需安装几个Package就可以了,于是按照网上教程搞定。我输入了第一行Python代码:
print('你好')
然后⌘+B运行,编译器报错。看了一下和中文字符有关系,这里涉及到Python编码问题。
在网上找了很多方法,解决方法都是一致的:在Sublime Text 3 中依次点击菜单Tools->build system->New build system,粘贴下方的代码并保存为Python.sublime-build,重启Sublime即可。
{
"cmd": ["python","-u","$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python",
"encoding": "cp936"
}
但以上代码对我的Sublime Text 3无效。于是继续寻找解决方法,通过《TL;DR - 有关 Python 2 和 Sublime Text 中文 Unicode 编码问题的分析与理解》《Sublime 3 用 Ctrl+B 运行打印中文就报错是什么原因?》《在Sublime Text中使用不同的python版本》,我终于有点头绪。在默认情况下,Sublime Text 3里的Python 3的sys.stdout.encoding
输出为UTF-8,但我的sys.stdout.encoding
输出却为US-ASCII,可以通过修改PYTHONIOENCODING
来改变sys.stdout.encoding
的编码。
在夜深人静的晚上,我通过近两个小时的寻找解决方法,不断摸索,对上述代码进行了修改,Sublime Text 3中的Python 3终于能输出中文了!
{
"shell_cmd": "python3 -u \"$file\"",
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python",
"env": {"PYTHONIOENCODING": "utf-8"},
}
终于可以愉快的学习了。附修改前后Python的编码改变情况:
修改前:
修改后: