1.问题描述:
最近用vscode的时候突然发现中文字符出现乱码。在网上找了好几种方法都不行,用各种编码格式打开都还是是不行,就在心灰意冷的时候无意中发现了端倪,最后也成功的解决了问题。
2.原因分析:
一般像是这种乱码的问题大概率是文件的编码格式不对,想深入了解这些得先来熟悉一下常用的编码知识
-
保存编码:即以何种字节规则保存中文,如果以UTF-8,那么中文会以类似
3个字节
保存一个中文的形式保存到磁盘,而使用GBK中文是以类似2个字节
保存一个中文的形式保存到磁盘,这叫编码,也叫做保存编码。 -
读取编码,即读取该文件时使用的是何种编码。如果文件以GBK编码保存,以UTF-8编码读取,那么文件中的中文都会乱码。
-
所以这里有个非常重要的知识点:读取编码和保存编码要一致才能保证不乱码
3.解决方案:
1)解决步骤
还要有个问题就是,
为什么我用GBK或者UTF8去打开的时候都是乱码
(我能确保我只用过这两种编码格式)?
- 带着这个问题,我想到了一个蠢方法,直接把乱码复制到百度看看效果,说干就干,没想到这竟然让我发现了新大陆。
- 乱码恢复没想到这个网站直接给了新的思路。结果是恢复回去了,这里又有个新的问题
为什么我当时的编码是UTF8,而这个网站显示的是GBK
?
- 按照网上的提示,我把先当前的编码以GBK的形式进行保存
- 然后用UTF8编码进行打开,然后就大功告成
2)深入分析
- 解决一下上面的遗留两个问题
为什么我用GBK或者UTF8去打开的时候都是乱码
?
原因:因为在当前文本下字符本身就是乱码的,可以这样理解就在当前的文本下,我本来的字符就是乱码,所有不论我们用GBK或者是UTF8去读取,文件依旧是乱码。
可是为什么我当时的编码是UTF8,而这个网站显示的是GBK
?
原因:因为这个网站本身就是通过假设不断的当前和原来的编码格式,推断出你要复原的路径。它的假设是只要你当前文件的格式为GBK格式,然后再转变为UTF8格式就可以复原了。所以我们上面的方法就是按照这种思路去复原出来的。
4.总结
总的来说,我们通过学习一些相关编码知识和运用一下乱码恢复工具就可以很快的解决这些乱码相关的问题。