Sublime text 3 [Decode error - output not utf-8]或者[Decode error - output not gbk] 解决方法

一、首先在python下使用中文字符,python默认使用ascii编码,一般情况下再开头加上以下语句即可解决 :

#!-*- coding:utf-8 -*-


二、指定的编码一般在XX.sublime-build里,比如python.sublime-build的内容为: 

[python]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. {  
  2.     "shell_cmd""ruby \"$file\"",  
  3.     "file_regex""(\\w:...*?):([0-9]*):?([0-9]*)",  
  4.     "selector""source.ruby",  
  5.     "encoding""utf-8",   
  6. }  

其中encoding就是指定的编码,python.sublime-build可以在C:\Users\cuijiying\AppData\Roaming\Sublime Text 3\Packages\User里找到.

我们可以通过修改python.sublime-build来修改输出文字信息的编码.

1. 将python.sublime-build文件从python.sublime-package里复制出来,(注意:python.sublime-package是一个zip压缩文件,只要将其后缀名改为zip即可打开这个压缩文件)

2.将python.sublime-build复制到sublime text的

我们可以通过修改python.sublime-build来修改输出文字信息的编码.

3.将python.sublime-build复制到sublime text的C:\Users\cuijiying\AppData\Roaming\Sublime Text 3\Packages\User目录

4. 打开此文件,将此文件中的"encoding": "utf-8"修改为"encoding": "gbk"

以上这种修改有局限,比如我有时候输出的是utf-8,有时候输出的是gbk,这时候就不行了.


三、如果以上都不能解决,以下方法可以解决这个局限.

1.在sublime text的安装目录下的Packages\目录下找到Default.sublime-package,将这个复制出来,将后缀改名为zip.

是的,它就是个zip文件,解压缩它,然后将其中的exec.py文件放到sublime text的C:\Users\cuijiying\AppData\Roaming\Sublime Text 3\Packages\User目录下.

2.打开exec.py.找到类ExecCommand的on_data函数(这个函数因版本不同可能会有差异,我的是sublime3114的,是on_data),在以下位置添加代码

def on_data(self, proc, data):
        try:
            characters = data.decode(self.encoding)
        except:
            characters = "[Decode error - output not " + self.encoding + "]\n"
            proc = None


        # Normalize newlines, Sublime Text always uses a single \n separator
        # in memory.
        characters = characters.replace('\r\n', '\n').replace('\r', '\n')


        self.append_string(proc, characters)




         #要加的内容
         #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两种编码都试试,这样可以解决编码错误的问题. 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值