CentOS 7 系统优化之防止显示中文乱码

本文介绍在 CentOS 7 系统中,如何查看系统字符集,以及如何修改系统字符集,解决文件与系统之间,或远程连接工具与系统之间,因为字符集不统一,而造成的中文乱码问题。

一、查看系统字符集


  • 使用echo $LANG命令,查看当前系统使用的字符集。

    1. [root@centos7 ~]# echo $LANG
    2. en_US.UTF-8
    3. [root@centos7 ~]#

    其中$LANG是系统的环境变量,使用echo命令输出了$LANG变量内容。

    输出内容为en_US.UTF-8,其中表示的意义如下:

    • en_US 表示当前系统的语言是英语。
    • UTF-8 表示当前系统的字符集是 UTF-8 。
  • 使用locale命令,查看当前系统使用的字符集。

    1. [root@centos7 ~]# locale
    2. LANG=en_US.UTF-8
    3. LC_CTYPE="en_US.UTF-8"
    4. LC_NUMERIC="en_US.UTF-8"
    5. LC_TIME="en_US.UTF-8"
    6. LC_COLLATE="en_US.UTF-8"
    7. LC_MONETARY="en_US.UTF-8"
    8. LC_MESSAGES="en_US.UTF-8"
    9. LC_PAPER="en_US.UTF-8"
    10. LC_NAME="en_US.UTF-8"
    11. LC_ADDRESS="en_US.UTF-8"
    12. LC_TELEPHONE="en_US.UTF-8"
    13. LC_MEASUREMENT="en_US.UTF-8"
    14. LC_IDENTIFICATION="en_US.UTF-8"
    15. LC_ALL=
    16. [root@centos7 ~]#
  • 使用locale -a | grep "CN"命令,查看系统是否有安装中文字符集的支持。

    1. [root@centos7 ~]# locale -a | grep "CN"
    2. bo_CN
    3. bo_CN.utf8
    4. ug_CN
    5. ug_CN.utf8
    6. zh_CN
    7. zh_CN.gb18030
    8. zh_CN.gb2312
    9. zh_CN.gbk
    10. zh_CN.utf8
    11. [root@centos7 ~]#

    如果没有中文字符集,例如zh_CN.utf8,则需要使用yum install kde-l10n-Chinese安装中文字符集。

  • 使用localectl命令,加status参数,显示当前的区域设置。

    1. [root@centos7 ~]# localectl status
    2. System Locale: LANG=en_US.UTF-8
    3. VC Keymap: us
    4. X11 Layout: us
    5. [root@centos7 ~]#

二、修改系统字符集


  • 临时修改字符集

    使用export命令,修改$LANG环境变量。

    1. [root@centos7 ~]# export LANG=zh_CN.UTF-8
    2. [root@centos7 ~]# echo $LANG
    3. zh_CN.UTF-8
  • 永久修改字符集

    使用vim命令,修改/etc/locale.conf文件内容,把LANG="en_US.UTF-8"修改为LANG="zh_CN.UTF-8"即可,保存并退出。

    使用source命令,让修改的配置文件生效。

    1. [root@centos7 ~]# source /etc/locale.conf
    2. [root@centos7 ~]# echo $LANG
    3. zh_CN.UTF-8

三、解决乱码问题


系统出现乱码的原因,主要分为 2 种情况:

  1. 文件内容出现乱码。
    解决方法:修改文件或系统的字符集,统一字符集即可。

  2. 远程连接时出现乱码。
    解决方法:修改远程连接工具的字符集,与系统的字符集统一即可。例如,使用 Xshell 工具,在会话连接->属性->终端->编码,修改与系统一致的字符集。或者,修改系统字符集。

总结:出现乱码,就是因为字符集不统一。通过查询修改字符集,达到统一字符集的目的,就能够消除乱码现象。在 CentOS 7 系统中推荐使用en_US.UTF-8字符集。

(完)