背景:最近在使用XShell登录服务器时频繁出现Vim乱码、终端乱码问题(ls显示乱码),苦不堪言!昨天终于把XShell乱码原因找出来了。
原因
其实乱码无非就是编码未设置好!但是完全没想到竟然关系到三个编码开关——让我一一道来。
XShell、Vim与终端中编码有关的选项有三个,它们是:fileencodings、encoding 和 termencoding。
解决方法
fileencodings是Vim对文件的编码方式,一般情况下无需修改。查看Vim编码方式可在命令模式下输入:set fileencoding。我的Vim显示是utf-8。
termencoding其实就是XShell的乱码选项,常用的有UTF-8、Chinese Simplified,详见下图。
encoding指的是远程服务器的编码选项,可用命令echo $LANG对系统默认编码选项进行查询。encoding可分为两种,建议使用第二种方式修改:
系统级别
编辑系统文件/etc/default/locale,将LANG选项设置改为LANG="en_US.utf8"
用户级别
对bash用户文件(~/.bashrc or ~/.profile)填加一行来永远改变用户的locale设置。
export LANG=en_US.utf8
自己的设置:
encoding:en_US.UTF-8
termencoding:UTF-8