Linux中vi出现中文乱码的问题

引入
linux 下编程,用到的编程工具是VI,编辑编译都方便,但经常出现中文乱码问题。通常在和windows同步代码的情况下,Windows下默认支持的是gb编码,而Linux的vi 和vim默认支持的编码是utf-8(gedit默认也是utf-8)。

解决方案
所以在Linux下出现中文乱码,一般情况下是编码出现了问题,需要更改一下配置文件就好了。

方法一
在文件.virc中添加以下代码,文件没有需要新建

$vi ~/.virc
let &termencoding=&encoding
set fileencodings=utf-8,gbk
$:wq

方法二
在/etc/virc中进行如下修改
修改前:

if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
set fileencodings=ucs-bom,utf-8,latin1,gbk
endif

修改后:

$vi /etc/virc
if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
	set fileencodings=ucs-bom,utf-8,latin1,gb18030,gbk,gb2312,cp936
	set termencoding=utf-8
	set encoding=utf-8
endif

方法三
前两种方法无效时,可以尝试一下这种方法,修改当前的语言环境
执行LANG=zh_CN.utf-8修改当前环境语言常量

解决办法:先检查Linux本地字符编码集,如下:

$ locale
LANG=zh_CN.GBK
LC_CTYPE="zh_CN.GBK"
LC_NUMERIC="zh_CN.GBK"
LC_TIME="zh_CN.GBK"
LC_COLLATE="zh_CN.GBK"
LC_MONETARY="zh_CN.GBK"
LC_MESSAGES="zh_CN.GBK"
LC_PAPER="zh_CN.GBK"
LC_NAME="zh_CN.GBK"
LC_ADDRESS="zh_CN.GBK"
LC_TELEPHONE="zh_CN.GBK"
LC_MEASUREMENT="zh_CN.GBK"
LC_IDENTIFICATION="zh_CN.GBK"
LC_ALL=

然后更改机器的编码:

export LANG=zh_CN.utf8
1
知识补充
vim编码方面的基础知识:
1、存在3个变量:

encoding—-该选项使用于缓冲的文本(你正在编辑的文件),寄存器,Vim 脚本文件等等。你可以把 ‘encoding’ 选项当作是对
vim 内部运行机制的设定。 fileencoding—-该选项是vim写入文件时采用的编码类型。
termencoding—-该选项代表输出到客户终端(Term)采用的编码类型。

2、此3个变量的默认值:

encoding—-与系统当前locale相同,所以编辑文件的时候要考虑当前locale,否则要设置的东西就比较多了。
fileencoding—-vim打开文件时自动辨认其编码,fileencoding就为辨认的值。为空则保存文件时采用encoding的编码,如果没有修改encoding,那值就是系统当前locale了。
termencoding—-默认空值,也就是输出到终端不进行编码转换。

由此可见,编辑不同编码文件需要注意的地方不仅仅是这3个变量,还有系统当前locale和文件本身编码以及自动编码识别、客户运行vim的终端所使用的编码类型3个关键点,这3个关键点影响着3个变量的设定。

参考链接
VIM 文件编码识别与乱码处理

http://edyfox.codecarver.org/html/vim_fileencodings_detection.html
————————————————
版权声明:本文为CSDN博主「Carey_Lu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Carey_Lu/article/details/108794307

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值