前言

在Centos中通过locale来设置程序运行的不同语言环境,locale由ANSI C提供支持。locale的命名规则为<语言>_<地区>.<字符集编码>,如zh_CN.UTF-8zh代表中文,CN代表大陆地区,UTF-8表示字符集。在locale环境中,有一组变量,代表国际化环境中的不同设置。

locale导致的问题

中国人使用,总会出现中文名的文件或者文件内容是中文的,一般locale未指定则使用英文语言,此时查看中文文件将会出现乱码。
可以使用以下命令查看当前语言环境:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@wubase]# echo $LANG #只显示使用的语言
zh_CN.utf8
[root@wubase]# locale #显示区域环境
LANG=zh_CN.utf8
LC_CTYPE="zh_CN.utf8"
LC_NUMERIC="zh_CN.utf8"
LC_TIME="zh_CN.utf8"
LC_COLLATE="zh_CN.utf8"
LC_MONETARY="zh_CN.utf8"
LC_MESSAGES="zh_CN.utf8"
LC_PAPER="zh_CN.utf8"
LC_NAME="zh_CN.utf8"
LC_ADDRESS="zh_CN.utf8"
LC_TELEPHONE="zh_CN.utf8"
LC_MEASUREMENT="zh_CN.utf8"
LC_IDENTIFICATION="zh_CN.utf8"
LC_ALL=

设置中文字符集

locale -a可以查看系统支持的语言,如有zh_cn.UTF-8 表示已经安装了中文语言,如果没有则可以自己安装:

1
yum group install chinese-support

临时更换语言支持

如果只是临时更换linux系统的语言环境,可以通过输入设置 LANG=语言名称, 如中文是LANG=zh_CN.UTF-8

Linux是大小写敏感的,所以请注意字符大小写

修改系统默认语言

以下方法是通过修改设置系统默认的语言配置,如vi /etc/sysconfig/i18n,在里面加上如下内容:

1
LANG="zh_CN.UTF-8"

注意改好之后重启一下系统才能生效

还有一种说法是修改profile文件,但实测修改后会出现如下错误,而且locale也没更改过来,大家用以上方法即可。

-bash: export: `en_US.UTF-8’: not a valid identifier