1. 前言
1.1 locale简介
理解一下Linux中的专业名词:locale
在Linux中,它使用locale命令来设置和显示程序运行的语言环境(也就是系统运行语言环境,应用进程是在系统的进程之上运行的,应用程序的父进程是init进程)
locale的英文直译为场所,地区,地域,但它在Linux中含义要更大,在Linux中Locale根据计算机用户所使用的语言,所在国家或者地区,以及当地的文化传统定义一个软件运行时的语言环境 。
locale的主要作用是描述某一个地域内的人们的语言习惯和文化传统和生活习惯。一个地区的locale就是根据几大类的习惯(变量)定义的。
1.2 locale的配置语法
locale的配置语法:<语言>_<地区>.<字符集编码><@修正值>
例如:
zh_CN.utf8
zh代表中文,CN代表大陆地区,utf8表示字符集。
de_DE.UTF-8@euro
de表示德语,DE表示德国,UTF-8表示字符集,euro表示按照欧洲习惯加以修正
1.3 locale命令的原理
Locale命令的本质就是设置一组共12个LC开头的变量(不包括LANG和LC_ALL)
Linux中locale文件存放位置: /usr/share/i18n/locales
检查当前系统支持的语言:
[root@zcwyou ~]# ll /usr/share/i18n/locales
查看当前系统使用的语言环境:
[root@zcwyou ~]# 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=
LANG
LANG的优先级是最低的,它是所有LC_*变量的默认值。下方所有以LC_开头变量(不包括LC_ALL)中,如果存在没有设置的LC变量值,那么系统将会使用LANG的变量值来给这个变量进行赋值。如果LC变量有值,则以当前LC值为准。
LC_CTYPE
用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节,如何打印等,包括输入文字等等都与这个值有关。
LC_NUMERIC
用于格式化非货币的数字显示。
LC_TIME
用于格式化时间和日期。
LC_COLLATE
用于比较和排序。
LC_MONETORY
用于格式化货币单位。
LC_MESSAGES
用于控制程序输出时所使用的语言,主要是提示信息,错误信息,状态信息, 标题,标签, 按钮和菜单等。
LC_PAPER
默认纸张尺寸大小
LC_NAME
姓名书写方式
LC_ADDRESS
地址书写方式
LC_TELEPHONE
电话号码书写方式
LC_MEASUREMENT
度量衡表达方式
LC_IDENTIFICATION
locale对自身包含信息的概述
LC_ALL
它不是环境变量,它是一个宏,可通过该变量的设置覆盖所有的LC_变量。这个变量设置之后,可以废除LC_的设置值,使得这些变量的设置值与LC_ALL的值一致,注意,LANG变量不受影响。
优先级级别:LC_ALL>LC_*>LANG
补充一下:如果要用英文环境中输入中文,可以把 LC_CTYPE设定成zh_CN.GB18030,而其他所有的项都是en_US.UTF-8。
2. 远程登录命令行乱码解决方法
先确定当前终端软件工具(比如putty/xShell/SecureCRT)的编码设置,强烈建议使用UTF-8。
确认当前的语言环境:
[root@zcwyou ~]# echo $LANG
en_US.UTF-8
可以看出,当前的语言环境为en_US.UTF-8
查看locale配置
[root@zcwyou ~]# cat /etc/locale.conf
LANG=”en_US.UTF-8″
以上输出确认本系统支持的中文模式
[root@my_public_ip ~]# locale -a
留意最后的输出,可以看到zh_CN.utf8
zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8
zh_HK
zh_HK.big5hkscs
zh_HK.utf8
zh_SG
zh_SG.gb2312
zh_SG.gbk
zh_SG.utf8
zh_TW
zh_TW.big5
zh_TW.euctw
zh_TW.utf8
zu_ZA
zu_ZA.iso88591
zu_ZA.utf8
修改locale配置
[root@zcwyou ~]# vi /etc/locale.conf
修改为以下内容
#LANG=”en_US.UTF-8″
LANG=”zh_CN.UTF-8″
LANGUAGE=”zh_CN.UTF-8:zh_CN.UTF-8:zh_CN”
SUPPORTED=”zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en”
SYSFONT=”lat0-sun16″
检查:
[root@zcwyou ~]# echo $LANG
en_US.UTF-8
结果显示没有生效。
必须退出登录才生效
[root@zcwyou ~]# exit
重新登录系统后:
[root@zcwyou ~]# echo $LANG
zh_CN.UTF-8
可以看出,语言环境已经全局更改过来了。
检查:
[root@zcwyou ~]# date
2018年 11月 27日 星期二 14:31:09 CST
可以看到,已经有正确的中文显示了。
3. Linux图形界面设置中文
除了以上设置,还需要安装中文组件:
[root@zcwyou ~]# yum -y groupinstall "Chinese-Support"
[root@zcwyou ~]# yum -y install fonts-chinese
评论前必须登录!
注册