sublimetext的文件编码理解reopen/reload with encoding,set encoding,save with encoding, set file encoding to

sublime text编码解码过程

文件的编码事先是不知道的,sublime text打开文件时,会自动尝试用各种编码方式理解文件(在默认情况下,包括ASCII类, UTF-8 and UTF-16),然后根据对应的规则解码。

  • 有必要说明一下,「ANSII 编码」只是一种泛称,并不存在哪种具体的编码方式叫做ANSI,它只是一个Windows操作系统上的别称而已。凡是满足一定规则的编码都可以叫「ANSII 编码」。在中文简体Windows操作系统上,ANSII就是GBK;在泰语操作系统上,ANSI就是TIS-620(一种泰语编码);在韩语操作系统上,ANSII就是EUC-KR(一种韩语编码)
    大家在用中文版windows记事本保存文件的时候,可以选择ASCII格式,其实选择的就是GBK,如果你使用的是韩语的的windows,你选择的其实就是EUC-KR,只不过Windows可能是为了方便,把各种基于ASCII的编码方式都抽象为ASCII。

  • 如果sublime觉得文件的编码格式是ASCII类和UTF-8,那么它就会按照utf-8进行解码和显示,并且默认采用这个格式保存

  • 如果如果sublime觉得文件的编码格式是UTF-16 BE,就按照UTF-16 BE打开;如果觉得是UTF-16 LE,就按照UTF-16 LE打开,并且默认采用这个格式保存

  • 如果采用以上编码方式都无法确定如何解码,就采用备用编码格式 Western (Windows 1252) 解码,就是说它无法决定编码格式

  • 事实上,sublime的决定并不一定是正确的,所以乱码还是可能出现的。

下面是sublime的设置文件中的默认配置345行和352行,可以很清楚的看到其描述:

—The encoding to use when the encoding can’t be determined automatically.
—ASCII, UTF-8 and UTF-16 encodings will be automatically detected.
—如果sublime无法自动决定决定编码方式,就采用下述编码,默认是Western(Windows 1252)
—ASCII, UTF-8 and UTF-16编码格式可以被自动检测到
"fallback_encoding": "Western (Windows 1252)",

— Encoding used when saving new files, and files opened with an undefined encoding (e.g., plain ascii files).
— If a file is opened with a specific encoding (either detected or given explicitly), this setting will be ignored, and the file will be saved with the
encoding it was opened with.
—下述编码格式用来保存新文件,或者打开未具体定义编码格式的文件(如ASCII类文件)。
—如果文件打开时 自动检测到 或者 用户指定了编码方式,下述定义会被忽略,而会使用 指定的 或者 检测到 的编码方式打开和保存文件。

—注意,我们刚才说了,ASCII并不是一种具体的编码格式,它是一个泛称,包括GBK等。所以GBK文件会按照UTF-8规则进行解码,这也是中文乱码的原因。
"default_encoding": "UTF-8",

对几个容易混淆的操作进行说明

其中(reopen with encoding)(set encoding)
(save with encoding)是sublime text自带的。

安装了ConvertToUTF-8之后就会多出来两个,增加了对GBK的支持,中文不会再乱码:
(set file encoding to)(reload with encoding)

操作说明
reopen with encoding不用sublime猜了或者它猜错了,我自己指定解码方式,
reload with encoding和上面一个意思,只不过增加了对GBK的支持,中文不乱码
save with encoding指定保存的编码格式。比如我新建一个文件,不想使用默认的utf-8,我可以选择其他格式。或者我打开了一个文件,想把保存为其他格式。
set encoding和上面一个相似。用于指定将要保存的格式。它在下面的状态栏中,一般不显示,需要在设置中加上"show_encoding": true,状态栏中会显示当前文件的解码规则,点击它就会出现这个选项。与上面不同的是,选择编码方式后,不会立即保存,但是保存的格式已经指定好了。之后用户直接ctrl+s就行了,如果用户选择不保存,文件的编码格式就不会变。
set file encoding to和set encoding一样,只不过增加了对GBK的支持,并且优先级高于set encoding

注意
打开文件时,如果出现乱码,就切换编码方式,找到正确的编码方式打开。

如果出现乱码,就说明已经出现错误,如果不小心进行了保存操作,保存成了不同的编码格式,文件就更乱了,一般可以通过切换编码方式恢复文件。但是也有可能出现错误和损坏,乃至无法恢复

一般我们都是把文件保存成utf-8格式的。这样比较通用,不容易乱码,毕竟大多数软件都采用这个格式。但是在windows上的默认编码是GBK, 我们难免会遇到一些中文乱码问题,在上面浪费时间,所以搞清楚文件编码是很有必要的。

关于各种文件编码方式可以参考:
https://zhuanlan.zhihu.com/p/46216008

关于UTF-16 BE、UTF-16 LE、BOM等可以参考:
https://www.iteye.com/topic/583064

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值