解决sublime text输出decode error问题
2015-06-18 19:01
351 查看
sublime text有时运行会输出以下错误信息:
[Decode error - output not utf-8]或者[Decode error
- output not gbk]
错误信息意思就是脚本输出的信息不是某种指定编码.
指定的编码一般在XX.sublime-build里,比如ruby.sublime-build的内容为:
[python] view
plaincopy
{
"shell_cmd": "ruby \"$file\"",
"file_regex": "(\\w:...*?):([0-9]*):?([0-9]*)",
"selector": "source.ruby",
"encoding": "utf-8",
}
其中encoding就是指定的编码,ruby.sublime-build可以在Sublime Text 3\Packages\Ruby.sublime-package里找到.
我们可以通过修改ruby.sublime-build来修改输出文字信息的编码.
1. 将ruby.sublime-build文件从Ruby.sublime-package里复制出来,(注意:Ruby.sublime-package是一个zip压缩文件,只要将其后缀名改为zip即可打开这个压缩文件)
2.将ruby.sublime-build复制到sublime text的Data\Packages\User\目录
3. 打开此文件,将此文件中的"encoding": "utf-8"修改为"encoding": "gbk"
以上这种修改有局限,比如我有时候输出的是utf-8,有时候输出的是gbk,这时候就不行了.
以下方法可以解决这个局限.
1.在sublime text的安装目录下的Packages\目录下找到Default.sublime-package,将这个复制出来,将后缀改名为zip.
是的,它就是个zip文件,解压缩它,然后将其中的exec.py文件放到sublime text的Data\Packages\User\目录下.
2.打开exec.py.找到类ExecCommand的append_data函数,在以下位置添加代码
[python] view
plaincopy
def append_data(self, proc, data):
if proc != self.proc:
# a second call to exec has been made before the first one
# finished, ignore it instead of intermingling the output.
if proc:
proc.kill()
return
#add start
is_decode_ok = True;
try:
str = data.decode(self.encoding)
except:
is_decode_ok = False
if is_decode_ok==False:
try:
str = data.decode("gbk")
except:
str = "[Decode error - output not " + self.encoding + " and gbk]\n"
proc = None
# Normalize newlines, Sublime Text always uses a single \n separator
# in memory.
str = str.replace('\r\n', '\n').replace('\r', '\n')
self.output_view.run_command('append', {'characters': str, 'force': True, 'scroll_to_end': True})
其原理就是在解码输出文字编码出错时再使用gbk试试,相当于utf-8和gbk两种编码都试试,这样可以解决编码错误的问题.
您可以任意转载本文,但转载时请勿删除作者信息。
作者:hgyxbll,原文链接:http://shashanzhao.com/archives/976.html
[Decode error - output not utf-8]或者[Decode error
- output not gbk]
错误信息意思就是脚本输出的信息不是某种指定编码.
指定的编码一般在XX.sublime-build里,比如ruby.sublime-build的内容为:
[python] view
plaincopy
{
"shell_cmd": "ruby \"$file\"",
"file_regex": "(\\w:...*?):([0-9]*):?([0-9]*)",
"selector": "source.ruby",
"encoding": "utf-8",
}
其中encoding就是指定的编码,ruby.sublime-build可以在Sublime Text 3\Packages\Ruby.sublime-package里找到.
我们可以通过修改ruby.sublime-build来修改输出文字信息的编码.
1. 将ruby.sublime-build文件从Ruby.sublime-package里复制出来,(注意:Ruby.sublime-package是一个zip压缩文件,只要将其后缀名改为zip即可打开这个压缩文件)
2.将ruby.sublime-build复制到sublime text的Data\Packages\User\目录
3. 打开此文件,将此文件中的"encoding": "utf-8"修改为"encoding": "gbk"
以上这种修改有局限,比如我有时候输出的是utf-8,有时候输出的是gbk,这时候就不行了.
以下方法可以解决这个局限.
1.在sublime text的安装目录下的Packages\目录下找到Default.sublime-package,将这个复制出来,将后缀改名为zip.
是的,它就是个zip文件,解压缩它,然后将其中的exec.py文件放到sublime text的Data\Packages\User\目录下.
2.打开exec.py.找到类ExecCommand的append_data函数,在以下位置添加代码
[python] view
plaincopy
def append_data(self, proc, data):
if proc != self.proc:
# a second call to exec has been made before the first one
# finished, ignore it instead of intermingling the output.
if proc:
proc.kill()
return
#add start
is_decode_ok = True;
try:
str = data.decode(self.encoding)
except:
is_decode_ok = False
if is_decode_ok==False:
try:
str = data.decode("gbk")
except:
str = "[Decode error - output not " + self.encoding + " and gbk]\n"
proc = None
# Normalize newlines, Sublime Text always uses a single \n separator
# in memory.
str = str.replace('\r\n', '\n').replace('\r', '\n')
self.output_view.run_command('append', {'characters': str, 'force': True, 'scroll_to_end': True})
其原理就是在解码输出文字编码出错时再使用gbk试试,相当于utf-8和gbk两种编码都试试,这样可以解决编码错误的问题.
您可以任意转载本文,但转载时请勿删除作者信息。
作者:hgyxbll,原文链接:http://shashanzhao.com/archives/976.html
相关文章推荐
- Windows系统下使用Sublime搭建nodejs环境
- MAC 系统如何使用 Sublime Text 2 直接编译运行 java 代码
- Sublime里直接运行PHP配置方法
- 推荐几款用 Sublime Text 开发 Laravel 所用到的插件
- Web Inspector:关于在 Sublime Text 中调试Js的介绍
- Nodejs sublime text 3安装与配置
- Ubuntu下sublime中文无法输入的处理方案
- 解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
- win7 下搭建sublime的python开发环境的配置方法
- 教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
- sublime安装支持go和html的插件
- Sublime Text2 和 gist 打造自己的代码片断库
- [转]一些必不可少的Sublime Text 2插件
- 【手顺】常用IDE Tab改为空格的设置
- 【笔记】CentOS安装Sublime Text 3
- 【笔记】CentOS
- Sublime Text 2 入门
- Sublime Text 2 快捷键大全
- 让Sublime Text 2支持GB2312和GBK编码
- 实用SublimeText插件介绍与使用演示