<转>Sublime2 gbk编码乱码与gbk中文文件名乱码解决方案

简介: 让GBK Encoding Support内容支持中文,标签栏显示也为中文. 安装GBK Encoding Support ,然后修改SublimeText2\Data\Packages\GBK Encoding Support\sublime_gbk.

让GBK Encoding Support内容支持中文,标签栏显示也为中文.

安装GBK Encoding Support ,然后修改SublimeText2\Data\Packages\GBK Encoding Support\sublime_gbk.py 

内容如下:

 

#coding: utf8

import sublime, sublime_plugin
import os, re
import urllib

TEMP_PATH = os.path.join(os.getcwd(), 'tmp')
SEPERATOR = '                '

def gbk2utf8(view):
    try:
        reg_all = sublime.Region(0, view.size())
        gbk = view.substr(reg_all).encode('gbk')
    except:
        gbk = file(view.file_name()).read()
        text = gbk.decode('gbk')
        
        file_name = view.file_name().encode('utf-8')

        tmp_file_name = urllib.quote_plus(os.path.basename(file_name))  + SEPERATOR + urllib.quote_plus(file_name)
        tmp_file = os.path.join(TEMP_PATH, tmp_file_name)

        # f = file(tmp_file, 'w')
        f = file(view.file_name(), 'w')
        f.write(text.encode('utf8'))
        f.close()

        window = sublime.active_window()
        
        # v = window.find_open_file(tmp_file)
        v = window.find_open_file(file_name)

        if(not v):
            window.open_file(file_name)
            # window.open_file(tmp_file)

        window.focus_view(view)
        window.run_command('close')
        window.focus_view(v)

        sublime.status_message('gbk encoding detected, open with utf8.')

def saveWithEncoding(view, file_name = None, encoding = 'gbk'):
    if(not file_name):
        file_name = view.file_name()
    reg_all = sublime.Region(0, view.size())
    text = view.substr(reg_all).encode(encoding)
    gbk = file(file_name, 'w')
    gbk.write(text)
    gbk.close()    

class EventListener(sublime_plugin.EventListener):
    def on_load(self, view):
        gbk2utf8(view)
    def on_post_save(self, view):
        parts = view.file_name().split(SEPERATOR)
        if(view.file_name().startswith(TEMP_PATH) and len(parts) > 1):
            file_name = urllib.unquote_plus(parts[1].encode('utf-8')).decode('utf-8')
            saveWithEncoding(view, file_name)

class SaveWithGbkCommand(sublime_plugin.TextCommand):
    def __init__(self, view):
        self.view = view
    def run(self, edit):
        file_name = self.view.file_name()

        if(not file_name):
            return

        parts = file_name.split(SEPERATOR)
        if(not file_name.startswith(TEMP_PATH) and len(parts) <= 1):
            saveWithEncoding(self.view)
            sublime.active_window().run_command('close')
            sublime.active_window().open_file(self.view.file_name())
        else:
            sublime.active_window().run_command('save')

class SaveWithUtf8Command(sublime_plugin.TextCommand):
    def __init__(self, view):
        self.view = view
    def run(self, edit):
        file_name = self.view.file_name()

        if(not file_name):
            return

        parts = file_name.split(SEPERATOR)

        if(file_name.startswith(TEMP_PATH) and len(parts) > 1):
            file_name = urllib.unquote_plus(parts[1].encode('utf-8')).decode('utf-8')
            saveWithEncoding(self.view, file_name, 'utf-8')
            sublime.active_window().run_command('close')
            sublime.active_window().open_file(file_name)
        else:
            sublime.active_window().run_command('save')

 

 

相关文章
|
5月前
Sublime Ctrl+B 编译输出乱码
Sublime Ctrl+B 编译输出乱码
31 0
|
Python
解决 sublime text3 运行python文件无法input的问题
解决 sublime text3 运行python文件无法input的问题
101 0
|
存储 Windows
编码 GBK 的不可映射字符 (0x80),sublime设置中文,sublime没有GBK编码选项的问题详解(二)
编码 GBK 的不可映射字符 (0x80),sublime设置中文,sublime没有GBK编码选项的问题详解
314 1
|
Java Linux 开发工具
编码 GBK 的不可映射字符 (0x80),sublime设置中文,sublime没有GBK编码选项的问题详解(一)
编码 GBK 的不可映射字符 (0x80),sublime设置中文,sublime没有GBK编码选项的问题详解
743 1
Sublime Text3在mac下设置一个窗口打开多个文件
Sublime Text3在mac下设置一个窗口打开多个文件
236 0
Sublime Text3在mac下设置一个窗口打开多个文件
|
Python
Python编程:sublime打开中文文本乱码
Python编程:sublime打开中文文本乱码
142 0
Python编程:sublime打开中文文本乱码
|
Java iOS开发 MacOS
修改Sublime Text 默认*.sublime-package文件
修改Sublime Text 默认*.sublime-package文件
173 0
|
前端开发 JavaScript
Sublime Text3 设置不同文件不同缩进
Sublime Text3 中默认缩进是通用4个占位符,以前端文件为例, 现在主流规范中 Vue,HTML,JS,CSS 等缩进都是2个空格占位符,可以通过 sublime text3 右下角进行单文件设置,但是每次创建新文件都需要单独设置,这样比较繁琐,效率也低。
262 0
Sublime Text3 设置不同文件不同缩进
|
API
sublime text3实现Markdown文件预览
安装Markdown Preview 支持在浏览器中预览markdown文件 Ctrl+Shift+p, 输入 Install Package,输入Markdown Preview, 安装。
1815 0