Sublime深度定制:文件另存为GBK编码格式

谈到GBK编码问题不得不对Sublime强势吐槽一把:连windows自带的几乎只能打字的“记事本”都支持GBK编码,而如此鼎鼎大名的文本编辑器Sublime却不支持,同样倒霉的还有日语、韩语,也都不被支持。虽然用户这么多年一直强烈要求,却还是没加上,令人失望。

失望归失望,但这屁大点小事当然难不倒广大劳动人民,大家创造出一大批的插件来解决这个问题,最广为人知的就是ConvertToUTF8了(目测经常用Sublime的小伙伴们90%都装了这个插件)。

如何将文件另存为GBK格式?这个问题看似简单,却难倒了ConvertToUTF8ConvertToUTF8的名字“convert to utf8”已经表明它的作用是将其他编码的文件(如GBK)转化为UTF8编码,以便在Sublime上正常显示不乱码,但是要另存为GBK还真不行!

虽然有点反人类,但还真有不少国产项目用的是GBK编码。假如别人给你了一批GBK文件,你只是用Sublime打开看了一眼,然后发现编码变成了UTF8,还死活改不回去(ConvertToUTF8确实会造成这样的后果),那就尴尬了。

要解决这个问题,需要用到另一款插件GBK Support。不像ConvertToUTF8那么大而全(支持中日韩文的所有标准编码),GBK Support非常简洁,只支持GBK与UTF8之间相互转换,源码只有一个Python脚本,几乎可以当做学习Python编码处理的教材!

使用GBK Support插件

当打开一个文件时,如果该文件是GBK编码,那么GBK Support会在该文件的同目录下生成一个.dump文件,Sublime中打开的也是这个.dump文件,其作用是作为一个缓冲文件。也就是说.dump本身是一个UTF8文件,Sublime可以正常读写,当你按Ctrl+S保存时.dump中的内容将转化为GBK编码并保存到源文件中。但是你完全不用担心过多的.dump文件成为磁盘垃圾,当你在Sublime中关闭文件时,目录下的.dump文件会立刻消失。不得不说这个办法相当巧妙!

下面是图片示例:

在桌面新建一个GBK文件
在Sublime中打开出现.dump后缀
桌面上多出一个.dump文件
关闭Sublime中的.dump文件后桌面.dump也消失

如果你打开的文件不是GBK编码,那么插件将不会运行,而是交给Sublime本身去处理。

如何实现另存为功能呢?只需Ctrl+Shift+P,然后输入gbk,选择如下图两个选项中的一个即可:

GBK Support命令

小心一个大坑

GBK Support的作者无意留下了一个坑:UTF8字符集与GBK字符集中存在一些特殊字符相互之间无法识别,导致转换无法进行。

当遇到这种情况时怎么办?GBK Support选择了最糟糕的处理方式:不转换,并且一声不吭!当初我遇到这个问题还傻傻地以为Sublime卡死了~

如下图UTF8文件中存在一个特殊字符

UTF8文件中存在特殊字符

这时用GBK Support令存为GBK编码将没有任何反应!怎么办呢?

打开源码一看究竟吧

使用PackageResourceViewer打开GBK Support的源码sublime_gbk.py,可以快速定位到39行saveWithEncoding这个函数
关于PackageResourceViewer参见这篇文章Sublime深度定制:工具篇-插件修改神器PackageResourceViewer

定位到编码函数

第43行encode函数是关键句,encode函数是Python内置的编码函数,针对编码失败的问题,一般有2种解决方法:

  1. 在此处加上异常处理语句(麻烦);
  2. encode(encoding)改为encode(encoding,'ignore')(推荐)。
定位到encode函数

采用第2种方法后,无法识别的特殊字符将会被忽略,在转换后的文件中消失或乱码。但一般很长的中文文件中才有少数无法识别的特殊字符,忽略掉完全不会影响阅读,这比放在那里不予转换要好得多。

修改后的源码

现在可以随心所欲地另存为GBK了~

相关话题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容