首先xshell终端的编码已经是utf8了,也不是使用了@格式开头的字体,然后看看系统环境的语言编码是什么
echo $LANG
我这里显示zh_CN,但实际上我并没有安装相关的简体中文语言包!结果缺少实际语言字体支持,导致显示异常,比如ll / ls -l
显示的日期异常(不全/乱码),再如:用vim修改一些配置文件输入中文注释,中文的字体正常显示,但是你会发现中文字体的异常字符间距,各种多余的几个空格穿插在每个中文里面。
而这个zh_CN是我之前配置环境变量时定义了(当时在配置某个软件包还是编译什么项目时定义的)
我在 /etc/profile
中不慎手贱去定义了本地语言环境的变量 export LC_ALL=zh_CN
,各种谷歌百度,然后百度搜索质量堪忧+搜索相关性等于zz,搞了一个多小时没搞定。
才忽然想起了之前几天改过系统语言环境,排查出罪魁祸首。
解决办法很简单:直接从 /etc/profile
删掉这个语言环境变量,当然如果在其他文件定义了语言环境变量就删别处,或者把它改成 export LC_ALL=en_US
,然后 source /etc/profile
立刻生效。
vim如果中文输入+打开中文内容乱码,修改vim全局配置文件 /etc/vimrc
,文件末尾追加如下内容,并保存
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
如果使用xshell的话,确保会话属性的终端类型为 xterm
,同时 xshell 会话属性 → 终端 → 编码 为 UTF-8