菜鸟笔记
提升您的技术认知

vim输入中文乱码和打开中文文件乱码的问题

从网上下载了一个包含中文的代码文件,想要打开分析,但是一遇到中文就乱码了。

之前在编写python代码的时候,也曾遇到过输入中文乱码的问题,就算能够输入,只要光标在文字上面移动过,就会变成乱码。网上找到的答案都是添加encoding,fileencoding及termencoding这三项,即是在.vimrc下添加下面三行:

set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
set encoding=prc

这个方法可以很好的解决输入中文乱码的问题,但是却解决不了打开中文文件乱码的问题,百度了很久,基本上所有的人都说vim打开中文文件乱码添加这三项就可以解决。也有说在/var/lib/locales/supported.d/local文件添加下面两行后再用命令:sudo dpkg-reconfigure locales使其生效后

zh_CN.GBK GBK
zh_CN.GB2312 GB2312
zh_CN.GB18030 GB18030

再使用上面讲到的就可以解决,可是还是没有解决。

在.vimrc增加了 set fencs=utf-8,gbk,是告诉vim打开一个文件时尝试使用utf-8和gbk两种编码,没有解决问题。后来从博客后面看到fileencoding是设置编辑文件时使用的编码方式,然后就突然想到termencoding应该是设置在终端编辑文件时使用的编码方式吧,那我主要应该设置这项的编码方式啊!然后就在termencoding后面增加了编码方式gbk。。。。然后就可以了。。。然后又去解决问题后去仔细看了那篇博客,发现了:

encoding: encoding是Vim内部使用的字符编码方式,包括Vim的buffer(缓冲区)、菜单文本、消息文本等。默认是根据你的locale选择。VIM用户手册上建议只在.vimrc中改变它的值,事实上似乎也只有在.vimrc中改变它的值才有意义。你可以用另外一种编码来编辑和保存文件,如你的vim的encoding为utf-8,所编辑的文件采用cp936编码,vim会自动将读入的文件转成utf-8(vim的能读懂的方式),而当你写入文件时,又会自动转回成cp936(文件的保存编码)。
fileencoding: Vim中当前编辑的文件的字符编码方式,Vim保存文件时也会将文件保存为这种字符编码方式(不管是否新文件都如此)。
fileencodings: Vim自动探测fileencoding的顺序列表,启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。因此最好将unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1放到最后面。
termencoding: Vim所工作的终端(或者 Windows的Console窗口)的字符编码方式。如果vim所在的term与vim编码相同,则无需设置。如其不然,你可以用vim的termencoding选项将自动转换成term的编码.这个选项对GUI模式Vim(GVim)无效,而对Console模式的Vim而言就是Windows控制台的代码页,并且通常我们不需要改变它。

。。。。。如果在termencoding增加gbk项,发现输入中文乱码了啊,真是麻烦啊。。。。。。。