1,出现的问题及分析
在Sublime Text3中用ctrl+B运行python程序时,如果要打印输出英文时正常运行,而输出中文时则会报错,具体情况如下:
Traceback (most recent call last): File "D:\PythonWorkplace\test_print_unicode.py", line 3, inprint u'程序'UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
分析:参考 https://www.v2ex.com/t/163786
2,解决办法
(1)修改Sublime Text3中的设置
打开Preference-->Browse Packages...,查看是否存在python文件夹,若没有,可从Sublime Text2中相似路径(.../Sublime Text2/Packages)中拷贝Python文件夹,再从Python文件夹下修改Python.sublime-build文件,修改内容如下:
原文件:
{ "cmd": ["python", "-u", "$file"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "selector": "source.python" }
修改后:
{ "cmd": ["python", "-u", "$file"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "selector": "source.python", "env": { "PYTHONIOENCODING": "utf8"} }
之后即可正常运行python程序而不报错。
(2) 修改文件头部
在文件头部添加如下代码:
import sysreload(sys)sys.setdefaultencoding('utf-8')
该方法在输出中文时需要在每个文件头部都添加,较为麻烦,不太推荐