ssh远程连接服务器出现中文乱码主要分为两种:
1、命令行输出的中文有乱码
比如ll输出的月份,ibus等命令输出的信息
2、vim打开文件,文件显示乱码
1、查看使用的XShell活MobaXterm等远程连接软件的会话属性。
以XShell为例:文件->当前会话属性/默认会话属性->终端->编码,设置成Unicode(UTF-8)。
2、进入服务器,查看服务器默认语言属性
以Centos系统为例,其他linux系统类似。
使用命令locale或echo $LANG,可以查看当前系统使用的语言以及编码,我这边原本是LANG=zh_CN。
使用命令export LANG=zn_CN.UTF-8可以零食在当前会话中改变服务器编码
或者直接编辑文件~/.bash_profile,修改或加入export LANG=zn_CN.UTF-8,在当前用户下永久将服务器编码都改成zn_CN.UTF-8。
检测是否成功,输入ll、ibus等命令查看是否还有乱码
自己输入中文,看看是否显示正常,并且在删除输入的时候,能按照宽字符处理,将一整个中文字符删除。
在~目录下创建或修改.vimrc文件,修改或添加以下几行。一般来说这里的encoding和termencoding保持一致,且为utf-8、gbk、gb2312、gb18030中的一个就可以了,我暂时不清楚写哪个比较好,既然utf-8可以,那就用utf-8吧。
- " 单个双引号为.vimrc的注释符
- " 设置vim打开的编码格式
- set encoding=utf-8
- set fileencodings=ucs-bom,utf-8,cp936,gb18030,latin1
- set termencoding=utf-8
- " tab替换成空格,默认为8个
- set expandtab
- " tab替换成的空格数改成4个
- set ts=4
- " 设个好像是显示时空格对其的设置
- set shiftwidth=4
- " 语法高亮
- syntax on
- " 显示行数
- " set nu
另外,如果vim打开文件乱码,cat输出文件不乱吗,可以尝试在vim打开的文件内进行以下操作
- :e ++enc=utf8
- 或者
- :e ++enc=zh_CN
- 应该有一个能把乱码变正常。
- 执行后文件变为readonly状态,需要修改的话,设置
- :set noreadonly