失望归失望,但这屁大点小事当然难不档袭倒广大劳动人民,大家创造出一大批的插件来解决这个问题,最广为人知的就是 ConvertToUTF8 了(目测经常用Sublime的小伙伴们90%都装了这个插件)。
如何将文件另存为GBK格式?这个问题看似简单,却难倒了 ConvertToUTF8 。 ConvertToUTF8 的名字“convert to utf8”已经表明它的作用是将其他编码的文件(如GBK)转化为UTF8编码,以便或段在Sublime上正常显示不乱码,但是要另存为GBK还真不行!
虽然有点反人类,但还真有不少国产项目用的是GBK编码。假如别人给你了一批GBK文件,你只是用Sublime打开看了一眼,然后发现编码变成了UTF8,还死活改不回去( ConvertToUTF8 确实会造成这样的后果),那就尴尬了。
要解决这个问题,需要用到另一款插件 GBK Support 。不像 ConvertToUTF8 那么大而全(支持中日韩文的所有标准编码), GBK Support 非常简洁,只支持GBK与UTF8之间相互转换,源码只有一个Python脚本,几乎可以当做学习Python编码处理的教材!
当打开一个文件时,如果该文件是GBK编码,那么 GBK Support 会在该文件的同目录下生成一个 .dump 文件,Sublime中打开的也是衫蠢誉这个 .dump 文件,其作用是作为一个缓冲文件。也就是说 .dump 本身是一个UTF8文件,Sublime可以正常读写,当你按 Ctrl+S 保存时 .dump 中的内容将转化为GBK编码并保存到源文件中。但是你完全不用担心过多的 .dump 文件成为磁盘垃圾,当你在Sublime中关闭文件时,目录下的 .dump 文件会立刻消失。不得不说这个办法相当巧妙!
下面是图片示例:
如果你打开的文件不是GBK编码,那么插件将不会运行,而是交给Sublime本身去处理。
如何实现 另存为 功能呢?只需 Ctrl+Shift+P ,然后输入 gbk ,选择如下图两个选项中的一个即可:
GBK Support 的作者无意留下了一个坑:UTF8字符集与GBK字符集中存在一些特殊字符相互之间无法识别,导致转换无法进行。
当遇到这种情况时怎么办? GBK Support 选择了最糟糕的处理方式:不转换,并且一声不吭!当初我遇到这个问题还傻傻地以为Sublime卡死了~
如下图UTF8文件中存在一个特殊字符
这时用 GBK Support 令存为GBK编码将 没有任何反应 !怎么办呢?
使用PackageResourceViewer打开GBK Support的源码 sublime_gbk.py ,可以快速定位到39行 saveWithEncoding 这个函数
( 关于PackageResourceViewer参见这篇文章 Sublime深度定制:工具篇-插件修改神器PackageResourceViewer )
第43行 encode 函数是关键句, encode 函数是Python内置的编码函数,针对编码失败的问题,一般有2种解决方法:
采用第2种方法后,无法识别的特殊字符将会被忽略,在转换后的文件中消失或乱码。但一般很长的中文文件中才有少数无法识别的特殊字符,忽略掉完全不会影响阅读,这比放在那里不予转换要好得多。
现在可以随心所欲地另存为GBK了~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)