千家信息网

Vim中文件编码处理与重新打开乱码文件的示例分析

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了Vim中文件编码处理与重新打开乱码文件的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言Vim 中有两个与
千家信息网最后更新 2026年11月02日Vim中文件编码处理与重新打开乱码文件的示例分析

这篇文章主要介绍了Vim中文件编码处理与重新打开乱码文件的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

前言

Vim 中有两个与编码有关的变量,如果理解了基本就不会再为编码问题头疼了。

  • encoding :Vim 内部编码,例如 buffer、寄存器、文本等。这个值一般用户不要设置,另外打开 Vim 之后再设置这个值也是没有意义的。大家可以将这个值看作是 Vim 程序自己的变量,如果在工作中遇到文件的编码问题,和 encoding 这个变量是万万没有关系的。

  • fileencoding :顾名思义了,就是文件的编码。

此外还有一个值,叫 fileencodings 是个复数。一般我们将这个值在 vimrc 中设置,Vim 打开一个文件的时候回根据 fileencodings 里面设置的顺序来猜测文件的编码。比如这样设置:

set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1

那么有时候 Vim 猜错了,打开的文件显示乱码怎么办呢?(ps:通常 Vim 打开文件的时候乱码是因为你的 fileencodings 里面没有写某个编码,所以 Vim 没有猜对。例如从上面的设置中删掉 gb18030 ,那么打开这种编码的文件的时候你会发现 fileencoding 的值是 latin1 ,而文件的显示是乱码)

这时候你可能想到设置 fileencoding 的值,但是此时我们的文件已经打开了,你设置后会发现 Vim buffer 的状态变成了 Edited 。而文件依然显示乱码,没有变化。具体的原因后文会详细解释。

正确的做法是 以特定编码重新打开文件 ,例如在 Vim 中使用重新打开命令 :e ++enc=gb2312 ,其中 ++enc 是一个选项,可以指定使用的编码。打开后你会发现 Vim 按照你指定的形式打开了文件,但是文件变成了 readonly 状态,如果要修改,设置 :set noreadonly 就好。

其实原理有点像 Python 里面有人提出的 三明治模型 :


Python 在从流(例如网络, 文件 I/O 的时候),拿到的是 bytes ,通过 decode() 变成 str 而 Vim 在读入一个文件的时候,根据 fileencoding (用户设置的或者通过 fileencodings 猜测,将其转换成内部 encoding 的编码方式。

Python 在写入文件的时候,用 encode() 变成 bytes 再写。而 Vim 从 buffer 写到文件的时候,也是将数据从内部的 encoding 转换成 fileencoding 再写入。

这也就解释了为什么乱码的时候在 Vim 中修改 fileencoding 没什么卵用。

因为在打开文件之后设置 fileencoding 的值不会改变已经载入到 Vim buffer 中的数据,此时的数据已经是转换完成了的,这个设置只会改变写入的时候使用目前的 fileencoding 来写入,所以总结起来就是"打开文件使用了一个编码,写入文件的时候使用了另一个编码"。

而对乱码正确的需求应该是:我想要以特定的编码形式打开这个文件。

感谢你能够认真阅读完这篇文章,希望小编分享的"Vim中文件编码处理与重新打开乱码文件的示例分析"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

文件 编码 时候 乱码 篇文章 变量 数据 示例 分析 处理 就是 形式 状态 用户 问题 猜测 解释 头疼 顾名思义 没什么 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网佳科技有限公司 互联网科技工作委员会毛军 互联网科技有限公司经营范围 互联网科技公司税收优惠 互联网科技社 互联网科技未来 万易互联网科技有限公司 科技互联网创业计划书 四个字互联网科技公司取名 海南购全球互联网科技 互联网公司会议桌创意科技软装饰 北京三清互联网科技 宁夏众和广鑫互联网科技有限公司 辽宁互联网新科技 威龙国际互联网科技公司 互联网科技公司营业执照怎么办理 南通创西澳互联网科技有限公司 国产互联网科技公司 北京天晋互联网科技有限公司 互联网的黑科技实验室 哈尔滨大商圈互联网科技有限公司 深圳互联网络科技有限公司 互联网科技公司电话 美国互联网黑科技 广州紫鲸互联网科技 语蝶互联网科技有限公司 千方科技属于互联网企业吗 洛阳共同富裕互联网科技有限公司 湖北辰鑫科技互联网 科技和互联网行业的特点
0