Linux vim显示utf-8文档乱码怎么办?

Linux vim显示utf-8文档乱码怎么办?,第1张

Linuxvim显示utf-8文档乱码怎么办?

Vim是一个文本编辑器。在应用Vim的情况下,它实际上显示消息utf-8文档乱码。关于这个问题,下面完善了可行的解决方案和相关的基础知识。为什么不看看遇到这个问题的人?

1.基础知识详细介绍

在Vim中,有四个与编码相关的选项,它们是:文件编码、文件编码、编码和术语编码。在具体应用中,所有不正确的选择都会导致错误的代码。因此,每个Vim客户都应该确立这四个选项的含义。下面,我们来详细解释一下这四个选项的含义和作用。

(1)编码

编码是Vim中应用的一种标识符编码方法。在我们设置好编码之后,所有的缓冲区,内存,脚本制作中的字符串数组等等。在Vim中将使用这种编码。Vim在工作时,如果编码方式与其内部编码不一致,它会先将编码转换为内部编码。如果工作中使用的代码有一个不能转换成内部代码的标识符,这个标识符就会丢失。因此,在选择Vim内部代码的情况下,需要应用具有足够工作能力的代码,以防止其危及所有正常工作。

因为编码选项涉及到Vim中所有标识符的内部指示,所以只能在Vim启动时设置一次。在Vim的整个工作过程中改变编码会导致很多问题。用户手册中建议仅在中更改其值。vimrc,但实际上似乎只在中改变它的值更有意义。vimrc。如无特殊原因,请从头到尾设置编码为utf-8。为了更好地防止在非UTF-8系统软件如Windows中出现账单和提示信息的错误码,这几种设置可以分别进行:

设置编码=utf-8

设置langmenu=zh_CN。UTF-8

语言消息zh_CN。UTF-8

(2)术语编码

术语编码是Vim用来在屏幕上显示的代码。当显示信息时,Vim会将内部代码转换为显示代码,然后输出。当代码中有一个标识符不能转换成显示屏的代码时,这个标识符就会变得可疑,但不容易危及编写它的实际 *** 作。如果未设置termencoding,则立即应用编码而不进行转换。

比如你在Windows中按照telnet登录Linux服务中心,因为Windows中的telnet是GBK编码的,而Linux中的UTF-8是编码的,所以你在telnet下的Vim中总会得到错误的代码。此时有两种方法可以清除错误码:一种是将Vim的编码改为gbk,另一种是保持编码为utf-8,将termencoding改为gbk,让Vim在显示信息时进行格式转换。显然,在应用前一种方法时,如果在书面文件中有一个GBK不能指明的标识符,这个标识符就会丢失。但是如果应用后一种方法,虽然由于终端设备的限制,这个标识符没有显示出来,但是在整个书写过程中,也不容易丢失。

对于用户界面下的GVim,它的显示信息不依赖于TERM,所以termencoding对它来说没有意义。在GTK2下的GVim中,termencoding始终是utf-8,不能更改。而Windows下的GVim忽略了termencoding的存在。

(3)文件编码

当Vim从硬盘加载文件时,它会检测文件的编码。如果文件的编码方法与Vim的内部编码方法不同,Vim将转换编码。转换之后,Vim会将fileencoding选项设置为文件的编码。Vim保存磁盘时,如果编码与fileencoding不同,Vim会进行编码转换。因此,根据打开文件后设置fileencoding,我们可以将文件从一种编码转换为另一种编码。但是从前面的详细介绍可以看出,当文件打开时,在Vim进行检测后,fileencoding是自动设置的。所以,如果有错误码,我们无法通过打开文件后再次设置fileencoding来纠正。

简单来说,fileencoding就是今天用Vim写的文件的标识符编码方式。当Vim存储文件时,它也会将文件存储为这种标识符编码方法(无论是否是新文件)。

(4)文件编码

代码的自动检索是根据fileencodings的设置完成的,注意是复数形式。Fileencodings是一个用分号分隔的目录,目录中的每一项都是一个编码名称。当我们打开文件时,VIM按顺序应用fileencoding中的代码来尝试编码和解码。如果成功,我们将应用这种编码方法进行编码和解码,并将FileEncoding设置为该值。如果不成功,我们将再次尝试下一次编码。

所以我们在设置fileencodings时,一定要把文件不是这种编码方式时更容易出现编解码不成功的严格编码方式放在前面,把fat编码方式放在后面。比如latin1是一种非常胖的编码方式,一种编码方式得到的所有字符都不容易用latin1解码和译码——自然,解码和译码得到的结果就是应得的“错码”。因此,如果你把latin1放在fileencodings的第一位,很自然的所有中文文件都是用错误的代码打开的。

以下是强烈推荐的Internet上的文件编码设置:

设置文件编码=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1

其中,ucs-bom是一个非常严格的编码,基本上没有没有用这个编码的文件,所以很可能被误判为ucs-bom,所以先来。

Utf-8也很严格。除了非常短的文件(比如很多人推崇的GBK编码的“中国联通”被误判为UTF-8的经典编码不正确),现实生活中一般文件基本不太可能被误判,所以放在第二位。

接下来是cp936和gb18030。如果这两个代码放在前面,会有很多误判,所以需要放在后面。cp936的编码室空比gb18030小,所以cp936放在gb18030前面。

至于big5、euc-jp和euc-kr,它们的严格程度与cp936相似。如果把它们放在后面,写这种编码文件会有很多误判,但这是Vim嵌入式编码检测系统处理不了的。因为我们的客户很少有机会编写这类编码文件,所以我们决定把cp936和gb18030放在前面,以保证这类代码的识别。

最后是latin1。这么胖的代码,大家都没办法,只能放在最后。但不幸的是,如果你遇到一个实际上是用latin1编码的文件,在大多数情况下,它不会有机会回落到latin1,通常会在之前的编码中被误判。但是,就像之前一直说的,我们的客户并没有太多的机会去接触这样的文件。

如果编码判断错误,那么编解码后的结果是无法被人识别的,所以人们就说这个文件代码错误。此时,如果您知道该文件的正确编码,您可以在打开文件时应用enc=encoding的方法来打开该文件,例如:

:eenc=utf-8myfile.txt

以上是我对Linux如何处理Vim显示信息的乱码utf-8文档的总结。出现乱码问题后,可以重新按照设置fileencodings来处理。我期待对你有所帮助。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/770727.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-02
下一篇 2022-05-02

发表评论

登录后才能评论

评论列表(0条)

保存