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的编码改变情况:

修改前:

修改后: