在Linux系统操作证 , Vim是文本编辑器 , 在使用Vim的时候 , 居然显示utf-8文档乱码 , 遇到这种情况要如何解决呢?下面小编就给大家介绍下Linux如何解决Vim显示utf-8文档乱码问题 , 一起来看看吧 。
![Linux vim显示utf-8文档乱码怎么办?](http://img.yunnanlong.com/220416/1J5533K4-0.jpg)
1.相关基础知识介绍
【Linux vim显示utf-8文档乱码怎么办?】 在Vim中 , 有四个与编码有关的选项 , 它们是:fileencodings、fileencoding、encoding和termencoding 。在实际使用中 , 任何一个选项出现错误 , 都会导致出现乱码 。因此 , 每一个Vim用户都应该明确这四个选项的含义 。下面 , 我们详细介绍一下这四个选项的含义和作用 。
(1)encoding
encoding是Vim内部使用的字符编码方式 。当我们设置了encoding之后 , Vim内部所有的buffer、寄存器、脚本中的字符串等 , 全都使用这个编码 。Vim 在工作的时候 , 如果编码方式与它的内部编码不一致 , 它会先把编码转换成内部编码 。如果工作用的编码中含有无法转换为内部编码的字符 , 在这些字符就会丢失 。因此 , 在选择 Vim 的内部编码的时候 , 一定要使用一种表现能力足够强的编码 , 以免影响正常工作 。
由于encoding选项涉及到Vim中所有字符的内部表示 , 因此只能在Vim启动的时候设置一次 。在Vim工作过程中修改encoding会造成非常多的问题 。用户手册上建议只在 .vimrc中改变它的值 , 事实上似乎也只有在 .vimrc中改变它的值才有意义 。如果没有特别的理由 , 请始终将encoding设置为utf-8 。为了避免在非UTF-8的系统如Windows下 , 菜单和系统提示出现乱码 , 可同时做这几项设置:
set encoding=utf-8
set langmenu=zh_CN.UTF-8
language message zh_CN.UTF-8
(2)termencoding
termencoding是Vim用于屏幕显示的编码 , 在显示的时候 , Vim会把内部编码转换为屏幕编码 , 再用于输出 。内部编码中含有无法转换为屏幕编码的字符时 , 该字符会变成问号 , 但不会影响对它的编辑操作 。如果termencoding没有设置 , 则直接使用encoding不进行转换 。
举个例子 , 当你在Windows下通过telnet登录Linux工作站时 , 由于Windows的telnet是GBK编码的 , 而Linux下使用UTF-8编码 , 你在telnet下的Vim中就会乱码 。此时有两种消除乱码的方式:一是把Vim的encoding改为gbk , 另一种方法是保持encoding为utf-8 , 把termencoding改为gbk , 让Vim在显示的时候转码 。显然 , 使用前一种方法时 , 如果遇到编辑的文件中含有GBK无法表示的字符时 , 这些字符就会丢失 。但如果使用后一种方法 , 虽然由于终端所限 , 这些字符无法显示 , 但在编辑过程中这些字符是不会丢失的 。
对于图形界面下的GVim , 它的显示不依赖TERM , 因此termencoding对于它没有意义 。在GTK2下的GVim 中 , termencoding永远是utf-8 , 并且不能修改 。而Windows下的GVim则忽略termencoding的存在 。
(3)fileencoding
当Vim从磁盘上读取文件的时候 , 会对文件的编码进行探测 。如果文件的编码方式和Vim的内部编码方式不同 , Vim就会对编码进行转换 。转换完毕后 , Vim会将fileencoding选项设置为文件的编码 。当Vim存盘的时候 , 如果encoding和fileencoding不一样 , Vim就会进行编码转换 。因此 , 通过打开文件后设置fileencoding , 我们可以将文件由一种编码转换为另一种编码 。但是 , 由前面的介绍可以看出 , fileencoding是在打开文件的时候 , 由Vim进行探测后自动设置的 。因此 , 如果出现乱码 , 我们无法通过在打开文件后重新设置fileencoding来纠正乱码 。
推荐阅读
- 在Linux上如何安装使用SoundCloud
- Ubuntu安装PlayOnLinux的步骤
- Linux各版本安装BleachBit的命令大全
- 如何在Linux下使用Git
- Linux无网络安装GCC的技巧
- word显示绿色调回白色
- Linux SVN工具命令汇总
- Linux系统中strace操作实例汇总
- iphone12显示电量百分比
- 苹果xr没有显示电量百分比