Linux里打开GBK文件时发现中文会显示乱码,这是因为linux下使用vim打开编辑文件时,会根据vim的 fileencodings 配置的字符编码方式逐一探测该文件编码方式。并设置 fileencoding 为探测到看起来是正确的字符编码方式,如果没有找到合适的编码,就用latin-1(ASCII)编码打开(最后的选项)。在vim中使用命令:本文地址:http://www.04007.cn/article/362.html,未经许可,不得转载.
:set fileencodings?查看当前VIM编辑器fileencodings配置值(查看其它的配置如termencoding,encoding也一样),执行后显示:fileencodings=ucs-bom,utf-8,latin1。另外可查看VIM的配置文件:/etc/vimrc最前面几行就是设置了这个编码顺序:
if v:lang =~ "utf8$" || v:lang =~ "UTF-8$" set fileencodings=ucs-bom,utf-8,latin1 endif
所以编码文件,我们可以通过修改这个编码探测顺序来解决,可以在命令行里执行这两行代码,或者加到vimrc配置中,也可以修改上面vim配置文件中设置编码的那行:本文地址:http://www.04007.cn/article/362.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/362.html,未经许可,不得转载.
set termencoding=utf-8 set encoding=utf-8 set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936,big5,latin-1 #这个编码较全,一般的都可以了。
vim里关于编码配置的有以下四个: 本文地址:http://www.04007.cn/article/362.html,未经许可,不得转载.
encoding: Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等。用户手册上建议只在 .vimrc 中改变它的值,事实上似乎也只有在 .vimrc 中改变它的值才有意义。 本文地址:http://www.04007.cn/article/362.html,未经许可,不得转载.
fileencoding: Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此)。本文地址:http://www.04007.cn/article/362.html,未经许可,不得转载.
fileencodings: Vim 启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。因此最好将 Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面。本文地址:http://www.04007.cn/article/362.html,未经许可,不得转载.
termencoding: Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。这个选项在 Windows 下对我们常用的 GUI 模式的 gVim 无效,而对 Console 模式的 Vim 而言就是 Windows 控制台的代码页,并且通常我们不需要改变它。如果在终端环境下使用Vim,需要设置termencoding和终端所使用的编码一致。例如:set termencoding=cp936 或者 set termencoding=utf-8本文地址:http://www.04007.cn/article/362.html,未经许可,不得转载.
Vim 的多字符编码的处理方式:
(1)Vim 启动,根据 .vimrc 中设置的 encoding 的值来设置 buffer、菜单文本、消息文的字符编码方式。
(2)读取需要编辑的文件,根据 fileencodings 中列出的字符编码方式逐一探测该文件编码方式。并设置 fileencoding 为探测到看起来是正确的 字符编码方式,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。
(3) 对比 fileencoding 和 encoding 的值,若不同则调用 iconv 将文件内容转换为 encoding 所描述的字符编码方式,并且把转换后的内容放到为此文件开辟的 buffer 里,此时我们就可以开始编辑这个文件了。
(4)编辑完成后保存文件时,再次对比 fileencoding 和 encoding 的值。若不同,再次调用 iconv 将即将保存的 buffer 中的文本转换为 fileencoding 所描述的字符编码方式,并保存到指定的文件中。
本文地址:http://www.04007.cn/article/362.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/362.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |