vim乱码问题
有的时候使用gvim查看文本文件时,出现乱码,现在来确定下原因。
经过我的查资料,发现gvim里有几个关于编码设置的变量:encoding、fileencoding、fileencodings、termencoding。
我很纳闷,为什么要有这么几个关于编码的设置,一个不就行了??
encoding:vim内部使用的字符编码方式,包括vim的buffer、菜单文件、消息文本等。
fileencoding:vim当前编辑的文件的字符编码方式,vim保存文件时也会将文件保存为这种字符编码方式。
filesencoding:vim自动探测fileencoding的顺序列表,启动时会按照它所列出的字符编码方式逐一探测即将打开的文件字符编码方式,并且将fileencoding设置为最终探测到的字符编码方式。
Windows 7下创建一个txt,使用gvim打开,默认的设置为:
termencoding=
encoding=cp936
fileencoding=
fileencodings=ucs-bom
按照帮助内容说,当termencoding值为空时,取值与encoding一样;当fileencoding值为空时,也与encoding一样。
来个例子:
1.新建一个文件后,查看编码设置如下:
termencoding=
encoding=cp936
fileencoding=
fileencodings=ucs-bom
2.set fenc=utf-8,然后写入中文字符“编码”,保存并退出,使用二进制编辑器查看文件

很明显,文件保存的格式为utf-8
3.重新打开文件,结果如下,竟然乱码啦

4.为什么呢?
查看编码设置,结果如下:
termencoding=
encoding=cp936
fileencoding=
fileencodings=ucs-bom
我想在这里讲一些vim启动时编码设置的知识,首先根据vim配置文件设置各个变量的值,其次,如果encoding和fileencoding不相同,则对文件中的文字进行编码转换然后放入vim buffer中,然后进行显示。在这里呢,因为fileencoding为空,所以默认等于encoding,也就没有对文件中的文字进行编码转换就进行显示,所以出现了乱码。如果在vimrc中设置了fileencoding=utf-8后,我想就不会出现乱码了。
因为encoding=cp936,即vim buffer的编码方式是cp936,但是实际上buffer里的文字的编码方式为utf-8(没有将utf-8转换为cp936),所以出现乱码
5.怎么解决呢?
使用set enc=utf-8,文本即可显示正常,如下图

6.为什么通过set enc=utf-8就可以解决问题呢?
设置了enc=utf-8后,vim buffer的编码方式被设置为utf-8,因此和文件的真正编码一样了,正确显示
vim乱码问题的更多相关文章
- VIM 乱码终极解决
原文链接:http://blog.163.com/mageng11@126/blog/static/1408083742012128105645169/ 关于vim乱码,这篇文章讲的很详细,mark一 ...
- vim 乱码问题的方法参考
linux 中设置当前用户的系统默认编码为 UTF-8 格式解决 vim 乱码问题的方法参考 任侠 2013-05-02 11:58 电脑基础 抢沙发 13,732 views 在使用 l ...
- centos7 字体库。vim乱码
centos7 字体库.vim乱码 windows上传文件到centos,需要先使用dos2unix命令进行格式转换 先查看/usr/share下有没有这两个文件 没有的话yum -y install ...
- 3、树莓派的配置:改静态IP、连接ssh、安装中文字体、安装谷歌输入法、增加USB电流、修改触摸屏分辨率、扩展sd卡空间、修复vi和vim乱码问题、安装配置远程桌面vnc
本博文仅作本人操作过程的记录,留作备忘.自强不息 QQ1222698 1.连接上HDMI线,插上触摸屏,插上键盘,鼠标,网线,启动.系统正常启动,但是一直闪烁,不停的黑屏,是由于触摸屏的usb口供电不 ...
- CentOS 解决vim乱码问题
今天在服务器安装了任务调度工具(TaskCTL) 发现是乱码的,看了官方文档说的办法也没有处理成功,可能由于他们已经有一段时间没有维护这个版本了.(以前提供的免费版本) 后来发现CentOS的Vim的 ...
- Ubuntu 16.04系统下解决Vim乱码问题
方法: 打开终端输入:vim /etc/vim/vimrc,进入编辑模式,加入如下配置: set fileencodings=utf-8,gb2312,gbk,gb18030 set termenco ...
- 解决 vim 乱码
打开vim安装目录下的_vimrc,在头部加上几句配置语句就能搞定: //设置默认编码 set encoding=utf-8 set fileencodings=utf-8,chinese,latin ...
- [vim]乱码问题
在vim输入中文乱码 1. 检查系统是否支持中文 locale -a 没有中文支持 安装中文包 apt-get install language-pack-zh-hans -y 2.这样可以输入中文了 ...
- vim乱码的解决
解决vim文件乱码,打开文件乱码,菜单,提示信息乱码: 有四个跟字符编码方式有关的选项,encoding.fileencoding.fileencodings.termencoding 在linux中 ...
随机推荐
- 用Jfree实现条形柱状图表,java代码实现
用Jfree实现条形柱状图表,java代码实现.可经经常使用于报表的制作,代码自己主动生成后能够自由查看.能够自由配置图表的各个属性,用来达到自己的要求和目的 package test1; impor ...
- Android应用程序组件Content Provider应用实例
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6950440 文简要介绍了Android应用程序 ...
- LR性能测试应用
上半个月,由于工作和上课两边跑,几乎没有属于自己的时间去做自己想做的事,在没有加班的一天晚上,我突然冲动地跑到图书馆借了一本书<LR性能测试应用>——姜艳. 我总喜欢看那些陈旧的书,因为在 ...
- word 中巧妙添加分隔线
- BullseyeCoverage:代码覆盖率。
1,安装和使用步骤 阅读READER文档.并安装(非常简单,README中有详细指令说明) 配置环境:同样可以阅读相关文档. 增加PATH环境变量.需要注意,此路径需要增加在PATH的最前列.即< ...
- C++标准程序库读书笔记-第四章通用工具
1.Pairs(对组) (1)class pair可以将两个值视为一个单元.任何函数需返回两个值,也需要pair. (2)便捷地创建pair对象可以使用make_pair函数 std::make_pa ...
- 关于mysql的安装
上个学期学了数据库后,曾多次试图安装数据库,但由于电脑的种种的原因或者是安装的问题,始终没能安装成功,今天终于succeed. 一.下载 首先从www.mysql.com网站上下载mysql,我下载的 ...
- .Net框架中,.ashx页面访问session
public class ClassName : System.Web.SessionState.IRequiresSessionState 需实现session接口
- Android TextView 字符串展示不同大小文字
用Spannable字符串实现: String s= "Hello Everyone"; SpannableString ss1= new SpannableString(s); ...
- seajs路径问题及源码分析
seajs如此神奇,究竟是如何做到的呢,想知基原理,方可看其源码~~之前冲忙写下的,可能有点乱哦~~有什么不对的,欢迎拍砖! 如果进入seajs了管理范围,那么路径分为: 1. / 或 ...