在Windows的Sublime Text控制台中打印utf8字符串


问题内容

python myscript.py从Windows控制台cmd.exe(即Sublime Text 外部 )运行此代码时,它可以工作:

# coding: utf8
import json
d = json.loads("""{"mykey": {"readme": "Café"}}""")
print d['mykey']['readme']

咖啡店

在Sublime Text 2中使用运行它时CTRL+B,它将失败:

  • 这样(默认情况下):

print d [‘mykey’] [‘readme’]
UnicodeEncodeError:’ascii’编解码器无法在位置3编码字符u’\ xe9’:序号不在范围内(128)
[在0.1秒内完成,退出代码为1]

[解码错误-输出不是utf-8]
[解码错误-输出不是utf-8]
[在0.1秒内完成]

  • 添加"encoding": "utf-8"在Python崇高-build文件并没有帮助

print 如果Sublime Text 2(适用于Windows)控制台包含一些UTF8字符,该如何正确操作?

注意:这 不是 使用Sublime Text 3在Python
3
打印UTF-8的重复,我之前已经链接到此问题。

这是Python.sublime-build文件:

{ "cmd": ["python", "-u", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python" }

(我尝试了有和没有"env": ...,有和没有"encoding": ...


问题答案:

我找到了一种可能的解决方法:encodingPython.sublime-build文件中添加参数:

{
"cmd": ["python", "-u", "$file"],
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python",
"encoding": "cp1252",
...

注意:"encoding": "latin1"似乎也可以使用,但是-我不知道为什么-"encoding": "utf8"不能使用,即使.py文件是UTF8,即使Python 3使用UTF8等也是如此。


编辑:现在可以使用:

{
  "cmd": ["python", "-u", "$file"],
  "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
  "selector": "source.python",
  "encoding": "utf8",
  "env": {"PYTHONIOENCODING": "utf-8", "LANG": "en_US.UTF-8"},
}

链接的主题: