最近在维护的一台服务器中发现,vim sh脚本及上传带中文名的文档到服务器,都显示乱码,排查处理方法如下:

 

1、使用 env 命令查看语言环境变量设置

# env |grep LANG

#

注:竟然是空的,即没有设置;


 

2、使用 locale 命令查看现有语言环境

# locale

LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

 

注:发现全是POSIX,即系统默认设置,没有设置系统语言环境;locale -a  <-a>参数是查看可用语言环境;


 

3、编辑系统语言文件

# vim /etc/sysconfig/i18n

新增(该文档仅这两二行设置)

LANG="zh_CN.UTF-8"
SYSFONT="latarcyrheb-sun16"


 

4、校验

    这时使用 env 命令还查看不到设置生效,退出该shell,重新登录,然后校验:

# env |grep LANG

LANG=zh_CN.UTF-8

-----------------------

# locale

LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=

-----------------------

再上传带中文的文档 及 vim sh 也都正常了;