在 linux 操作系统中,使用 vim 打开一个文本文件时,出现中文乱码的原因和解决方法

news/2025/11/26 0:39:42/文章来源:https://www.cnblogs.com/heyongshen/p/19269495

在 linux 操作系统中,使用 vim 打开一个文本文件时,出现中文乱码的原因和解决方法

问题场景:

例如:使用 vim 打开一个文件后,中文是乱码


乱码原因:

文件的编码格式 和 vim 用于解析文件内容的编码格式不一致,导致解析出来的内容错误,从而显示乱码。


解决方法:

1、查看文件本身的编码格式

 file -i filename

2、查看 vim 当前是使用哪种编码方式来解析文件内容

encoding 指定的就是 vim 内部使用的编码,即 vim 会根据 encoding 指定的编码方式来解析文件的内容。

# vim 命令模式下输入
set encoding?

显示 vim 使用的是 Latin1 编码,所以 vim 会把文件用 Latin1 来解析,而 Latin1 是单字节编码,只能表示英文字符、阿拉伯数字、还有一些符号,是无法表示中文的,必定乱码。


3、将 vim 的 encoding 设置为 和 文件相同的 utf-8,让 vim 使用和文件编码方式相同的 utf-8 来解析文件内容,从而正常显示。

# vim 的命令模式下执行
set encoding=utf-8

4、修改 vim 配置文件,让配置持久生效,否则下次打开还是乱码

vim 的全局配置文件路径是:/etc/vim/vimrc ,只需要在这个配置文件中加入 就行了,这样所有用户使用vim都会生效。

sudo vim  /etc/vim/vimrc 
set encoding=utf-8 

5、此时已解决 utf-8 编码格式文件使用vim 打开,中文乱码的问题。但是如果下次打开的是一个GBK编码格式的文件,和 vim 当前使用的 UTF-8 也不一样,后续还是可能会乱码。

vim 有一个名为 fileencodings 的指令用于指定多个不同的编码类型,打开某个文件时,vim 会根据文件使用的编码格式来从 fileencodings 指定的列表中选择一个对应的编码方式来解析文件,避免乱码

sudo vim  /etc/vim/vimrc 
set fileencodings=utf-8,gbk,latin1

编码基础知识

计算机为什么需要编码:

计算机只能存储 二进制 0 和 1,所以所有文字在存入计算机前,都必须转换成二进制编码。读取时再根据编码规则,把二进制还原成对应的字符。这个“转换规则”就是 字符编码。


最早的编码规范:ASCII 码

美国最先提出 ASCII,使用一个字节的 7bit 表示字符,可以覆盖到英文字母、阿拉伯数字、基本符号。


各国自建编码时代:万国码

因为其他国家的文字没法用 ASCII 码,所以都各自设计了自己的编码。如:中国的 GB2312 / GBK,存中文的时候使用2字节,存英文字符、阿拉伯数字的时候用1字节,从而实现兼容ASCII。


统一的字符集:Unicode

为了解决“编码混乱”的问题,国际组织推出 Unicode,给世界上每一个字符分配一个唯一编号(码点),从而大家可以根据这个“字符表”去设计具体的编码规则,比较出名的有:

  • UTF-8:使用 1~4 字节存储一个字符,英文、数字使用1字节(兼容ASCII),中文使用3字节存储。
  • UTF-16:使用 2~4 字节存储一个字符,所以就导致了和ASCII 不兼容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/976645.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【实验报告】sglang,vllm,transformers 在强制串行推理场景下的表现

【实验报告】sglang,vllm,transformers 在强制串行推理场景下的表现我们现在考虑若干强制串行的需求。也就是说,必须推理完这个之后再推理下一个。调包范围是 transformers,vllm,sglang投机采样/不使用投机采样。 投…

实验3类和对象

实验任务1 源代码如下: button.hpp#pragma once#include <iostream> #include <string>class Button { public:Button(const std::string &label_);const std::string& get_label() const;void c…

what is A

ai. "Amor vincit omnia" ὁ θεὸς ἀγαπᾷ τὸν κόσμοv from ancient Greek to Roman, even in the ancient Chinese. not lo.

夺命雷公狗—好用的截图工具分享

夺命雷公狗—好用的截图工具分享今天在工作 由于环境没有网络 但是又非常想截图~ ~! 无意间发现了一款非常不错的截图工具 pixpin ~ ~! 真心好用 暴赞 ! 而且还可以截长图,下载地址我就不分享了~ ~! 文档地址:…

Windows给文件夹别名

Windows 和 macOS 采用了不同的技术来实现多语言显示,思路与 macOS 的 .localized 机制非常相似。macOS 的方式:.localized 文件夹 正如您所说,macOS 使用一种非常直观的文件系统层面的本地化方案:你创建一个名为 …

2025 完整 AI 模型核心用法速查表 - 智慧园区

一、通用大模型(全能顶尖)GPT-4o Ultra(OpenAI)最擅长:多模态实时交互(语音+图像+文本)、复杂Excel函数嵌套生成,错误率<1.5%,通用能力天花板。 Gemini 2.5 Pro(谷歌)最擅长:草图转可交互3D模型、百万tok…

实验 3

task 1 Button.hpp1 #pragma once2 3 #include<iostream>4 #include<string>5 6 class Button {7 public:8 Button(const std::string& label_);9 const std::string& get_label() const;…

实验03

实验一 button.hpp#pragma once #include<iostream> #include<string>class Button{ public:Button(const std::string &label_);const std::string &get_label() const;void click();private:std…

pandas创建多sheets excel文件

pandas创建多sheets excel文件import pandas as pddf=pd.read_excel("d:\\test.xlsx")mtlist=[]fklist=[]for i in range(15): mtlist.append("AD-DDC-"+str(i))print(mtlist)fklen=len(mtlist…

直接load Qwen2_5OmniThinkerForConditionalGeneration进行推理时eos token失灵的问题,导致不断生成重复token直至max new tokens触发

https://github.com/QwenLM/Qwen2.5-Omni/issues/371遇到标题里描述的问题,最终的解决方法是:在调用 generate 函数时,显式地重新设置 eos_token_id 和 pad_token_id。代码示例如下:text_ids = model.generate(**i…

第三章 哈希表part01

第三章 哈希表part01**242.有效的字母异位词 ** leetcode链接:https://leetcode.cn/problems/valid-anagram/ 题目描述:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 字母异位词。 核心思路:主要考察…

pandas床建多sheets excel文件

pandas床建多sheets excel文件import pandas as pddf=pd.read_excel("d:\\test.xlsx")mtlist=[]fklist=[]for i in range(15): mtlist.append("AD-DDC-"+str(i))print(mtlist)fklen=len(mtlist…

2025年11月睫毛假发拉丝机,拉丝机,扫把丝拉丝机厂家权威推荐,细丝拉丝技术实力与口碑解析!

引言在全球工业制造领域,拉丝机作为关键设备,其性能和质量对于众多行业的生产效率和产品质量起着至关重要的作用。为了给全球用户提供权威、可靠的拉丝机厂家推荐,国际知名的工业设备测评协会开展了一项大规模的专业…

2025年11月混凝土增强纤维丝拉丝机,睫毛假发拉丝机,拉丝机厂家权威推荐,耐磨性能与精度测评!

引言在全球制造业蓬勃发展的当下,拉丝机作为关键的生产设备,其性能和质量直接影响着众多行业的生产效率和产品品质。为了给全球企业提供权威、可靠的拉丝机厂家参考,国际机械制造协会开展了一场全面且严格的测评活动…

2025年11月MBBR管材设备,PPR管材设备,PE管材设备公司推荐,管材机械专业制造与品牌保障口碑之选

2025年11月MBBR管材设备,PPR管材设备,PE管材设备公司推荐:青岛华利德塑料挤出设备有限公司在2025年11月,如果您正在寻找MBBR管材设备、PPR管材设备、PE管材设备等相关产品,那么青岛华利德塑料挤出设备有限公司绝对…

2025年11月PE管材设备,PPR管材设备,PVC管材设备厂商推荐:聚焦管材机械企业综合实力与核心技术

2025年11月PE管材设备,PPR管材设备,PVC管材设备厂商推荐:聚焦管材机械企业综合实力与核心技术在塑料加工行业蓬勃发展的当下,管材设备的质量和性能对于企业的生产和发展至关重要。众多管材设备厂商中,青岛华利德塑…

使用.NET开发并上线一个小智AI对话机器人的MCP服务转接平台

前言 最近小智AI对话机器人在ESP32社区实在是太火了,看过之前文章的小伙伴应该都知道之前有给桌面机器人开发过一个.NET客户端,所以对小智也算是比较熟悉。小智虽然支持MCP(Model Context Protocol)协议来扩展功能,但是…

nginx 代理的请求头设置

反向代理中请求头设置 location /superone/ { proxy_pass http://1xx.xx.xx.xx:1x13/; proxy_redirect default; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forward…

全国最好的有机农场推荐——德芳有机农场

一、德芳简介 德芳的故事始于2009年,创始人何女士走遍中国众多地方,遇到这片得天得厚的种植天堂。 农场坐落于江苏盱眙,占地达10平方公里,拥有五大种植园地,富含矿物质的火山岩地质,有可供直饮的水质资源。 德芳…

从网页复制变化内容的一个简单方法

在网页看到了想要复制的内容, 打开F12正欲复制, 但是内容是一段段输出的当想要复制网页中的变化内容时, 打开F12再一个个复制对我来说实在太麻烦了有这样的解决方案:打开F12的控制台, 定义函数:function observeElemen…