
一、乱码现象
利用sublime自带编译快捷方式ctrl+B会出现中文乱码的情况。
1 2 | print ( "没有循环数据!" )
print ( "完成循环!" )
|

二、寻找原因
1、由于之前我已经安装了插件ConvertToUTF8,排除文本编码错误问题。
2、相同的代码在插件sublimerepl搭建的解释器交互下(按F5键),能成功显示中文。

在查找了很多案例之后发现:
Anaconda插件安装之后会自动生成一个叫“Anaconda Python Builder”的编译系统,在 工具-编译系统-中可以看到。
sublime读取解释器返回文本的编码不一样,于是通过下面这段代码验证:
1 2 | import sys
print (sys.stdout.encoding)
|
用ctrl+B进行编译,返回的是“cp936”,用repl解释器交互返回的是utf-8,说明是由于编码不一致导致的。
之后新建了一个编译系统:
在Python3.sublime.build中写入下面代码:
1 2 3 4 5 6 7 8 | {
"cmd" :[ "C:\\Users\\jh\\Anaconda3\\python.exe" , "-u" , "$file" ],
"path" : "C:\\Users\\jh\\Anaconda3\\python.exe" ,
"file_regex" : "^[ ]*File \"(...*?)\", line ([0-9]*)" ,
"selector" : "source.python" ,
"encoding" : "utf-8" ,
"env" : { "PYTHONIOENCODING" : "utf8" }
}
|
之后再用ctrl+B进行编译,返回“utf-8”,并且能成功打印中文。
但是在此之前,因为尝试多种方法,导致anaconda插件的自动补全代码无法使用,于是重装。
三、Anaconda插件的正确使用
1、阅读官方指南,官方给的建议是最好每个项目都独立设置。
2、根据官方的建议,新建一个project,并编辑项目,在sublime-project文件中写入:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | {
"build_systems" :
[
{
"name" : "Anaconda Python Builder" ,
"selector" : "source.python" ,
"encoding" : "utf-8" ,
"env" : { "PYTHONIOENCODING" : "utf8" },\\使编码一致
"shell_cmd" : "C:\\Users\\jh\\Anaconda3\\python.exe -u \"$file\"" ,\\解释器路径
}
],
"folders" :
[
{
"follow_symlinks" : true,
"path" : "."
}
],
"settings" :
{
"python_interpreter" : "C:\\Users\\jh\\Anaconda3\\python.exe" \\解释器路径
}
}
|
保存。
3、在Preferences>Package Settings>Anaconda,在那里会发现两个不同的条目,Settings-Default和Settings-User分别选择1和2。这些文件中的任何选项都必须放置在全局范围内。在Settings-User中写入:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | {
"python_interpreter" : "C:\\Users\\jh\\Anaconda3\\python.exe" ,
"auto_python_builder_enabled" : false,
"suppress_word_completions" :true,
"suppress_explicit_completions" :true,
"complete_parameters" :true,
"anaconda_linter_phantoms" : true,
"pyflakes_explicit_ignore" :
[
"UnusedImport"
],
"anaconda_linting_behaviour" : "always" ,
"anaconda_linting" : true,
"anaconda_linter_delay" : 2.0,
"swallow_startup_errors" : true,
"env" : { "PYTHONIOENCODING" : "utf8" } ,
}
|
python学习网,免费的在线学习python平台,欢迎关注!