引入
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
————————————————
版权声明:本文为优快云博主「Carey_Lu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/Carey_Lu/article/details/108794307