远程登陆服务器的时候,设置了默认locale为en_US.UTF-8,然而debian还是输出POSIX,以至于xshell设置了正确的zh_CN.UTF-8,还是不能正确显示中文,具体表现是more可以显示中文,vi或者nano编辑的时候,中文是一堆乱码。google了很久找到如下解决方案:

  • 如果需要一个纯中文的系统的话,设定LC_ALL=zh_CN.XXXX,或者LANG=zh_CN.XXXX都可以。
  • 如果只想要一个可以输入中文的环境,而保持菜单、标题,系统信息等等为英文界面,那么只需要设定 LC_CTYPE=zh_CN.XXXX,LANG=en_US.XXXX就可以了。
  • 假如什么也不做的话,也就是LC_ALL,LC_*和LANG均不指定特定值的话,系统将采用POSIX作为lcoale,也就是C locale。

LANG和LANGUAGE的区别: LANG - Specifies the default locale for all unset locale variables LANGUAGE - Most programs use this for the language of its interface LANGUAGE是设置应用程序的界面语言。而LANG是优先级很低的一个变量,它指定所有与locale有关的变量的默认值 设定了LC_ALL就不用设置其他的了,他会强制覆盖掉LC_*设置部分LC_*和LANG的话,没有设置的LC_*采用的是LANG的值。

在.bashrc增加下面代码

#display Chinese in English environment correctly  
export LANG="en_US.UTF-8"
export LC_CTYPE="zh_CN.UTF-8"