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


       今天解决了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设置查看。

      

  • 相关阅读:
    C 语言中 static 的作用
    STM32 标准库
    STM32 HAL库与标准库的区别_浅谈句柄、MSP函数、Callback函数
    asp.net core launchsettings.json
    asp.net core mvc/api部署到iis
    依赖倒置来反转依赖
    ASP.NET Core in2020
    DDD学习一
    asp.net core学习一
    从零开始实现ASP.NET Core MVC的插件式开发
  • 原文地址:https://www.cnblogs.com/kingstarer/p/10291317.html
Copyright © 2020-2023  润新知