Windows环境下Sublime Text控制台打印UTF-8字符串异常问题
Sublime Text 2中Python打印Unicode字符报错的解决方案
你遇到的这个问题本质是Sublime Text 2的内置运行环境和Windows cmd的编码规则不一致导致的:cmd默认会使用系统的本地编码(比如GBK或者UTF-8,取决于你的系统设置),而Sublime Text 2的Python构建环境默认把输出编码锁成了ASCII,所以当你打印包含é这类非ASCII字符的Unicode字符串时,就会触发UnicodeEncodeError。
下面给你几个针对性的解决办法,都是适配ST2的,比ST3的方案更贴合:
方法1:在脚本中强制指定输出编码
在你的myscript.py开头加上这段代码,直接从脚本层面把标准输出的编码改成UTF-8,绕过Sublime的默认限制:
import sys import codecs # 强制将标准输出设置为UTF-8编码 sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
之后再按Ctrl+B运行,应该就能正常输出Café了。
方法2:修改Sublime Text 2的Python构建系统
如果不想每次都修改脚本,可以直接定制一个支持UTF-8的构建配置:
- 打开Sublime Text 2,点击顶部菜单栏的
Tools > Build System > New Build System - 把默认的模板内容替换成以下代码,然后保存为
Python-UTF8.sublime-build(保存路径默认即可):
{ "cmd": ["python", "-u", "$file"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "selector": "source.python", "encoding": "utf-8" }
- 回到脚本界面,在
Tools > Build System里选中你刚创建的Python-UTF8,再按Ctrl+B运行,就能稳定输出带特殊字符的内容了。
为啥ST3的解决方案没用?
因为Sublime Text 3和ST2的构建系统底层逻辑有差异,ST3的方案大多是修改内置的exec.py或者用更灵活的编码参数,但这些在ST2里不兼容,所以必须用上面适配ST2的方法才行。
内容的提问来源于stack exchange,提问作者Basj
相关产品推荐
相关产品推荐

