码迷,mamicode.com
首页 > 系统相关 > 详细

解决了一个困扰我近一年的vim显示中文乱码的问题

时间:2019-01-19 13:22:11      阅读:879      评论:0      收藏:0      [点我收藏+]

标签:编码   字符   机器   vimrc   识别   显示中文   secure   今天   bom   

   今天解决了vi命令打开日志文件中文总是显示乱码的问题。由于项目组中的日志包含一些特殊字符,所以使用vim打开日志文件时总是不能正确识别出文件字符编码。此时用:set fileencoding命令可以看出vim把文件编码识别成latin1。  

  在这种情况下无论终端设置成gbk还是utf-8编码,都不能正确显示中文。

  解决方法有两个:

  1 使用:e ++enc=utf-8命令强制让vim以utf-8编码重新打开文件 注意:由于我们程序有时也会输出gbk编码的中文字符日志,所以有时还会有少量乱码。

  2 在打开文件前设置好正确的fileencodings(注意这个参数比前面多了一个s,上面的是vim探测出来的文件编码,这个是可供vim选择的文件编码列表)

   在~/.vimrc里面加上一行设置

  set fileencodings=ucs-bom,utf-8,gbk18030

  (我们项目组机器默认的fileencodings是ucs-bom,utf-8,latin1,latin1是一种兼容性很强的字符编码,这样的设置让vim很倾向于认为文件编码是latin1)  

  总结一下今天学到的vim编码知识:vim涉及字符显示的选项有三个,fileencoding文件字符编码,encoding缓冲区字符编码,termencoding终端字符编码。  

  vim显示字符的顺序:(探测文件编码,从fileencodings里面选择最合适的编码赋值给fileencoding)按fileencoding编码读取文件->将读取到的内容转成encoding编码->将encoding编码转换成termencoding打印到终端->终端(我们平时主要使用的是securecrt)按设置的编码(一般是utf8)显示字符。

  其中fileencoding必须在文件打开前设置才有效,encoding必须在vim启动前设置才有效,termencoding可以根据需要随时设置。 (之前我一直不知道这几个设置生效限制,按网上介绍修改过四个编码,但还是乱码) 

  这四个编码如果设置不统一,就很有可能出现中文乱码问题,其中前三个编码可以在vim查看,最后一个编码需要在securecrt设置查看。

  

解决了一个困扰我近一年的vim显示中文乱码的问题

标签:编码   字符   机器   vimrc   识别   显示中文   secure   今天   bom   

原文地址:https://www.cnblogs.com/kingstarer/p/10291317.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!