Linux下查看、修改字符集

一·查看字符集
字符集在系统中体现形式是一个环境变量,以CentOS6.5为例,其查看当前终端使用字符集的方式可以有以下几种方式:
 
1、[root@david ~]# echo $LANG
zh_CN.GB18030
2、[root@david ~]# env |grep LANG
LANG=zh_CN.GB18030
LANGUAGE=zh_CN.GB18030:zh_CN.GB2312:zh_CN
3、[root@david ~]# export |grep LANG
declare -x LANG="zh_CN.GB18030"
declare -x LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
4、[root@david ~]# locale
LANG=zh_CN.GB18030
LC_CTYPE="zh_CN.GB18030"
LC_NUMERIC="zh_CN.GB18030"
LC_TIME="zh_CN.GB18030"
LC_COLLATE="zh_CN.GB18030"
LC_MONETARY="zh_CN.GB18030"
LC_MESSAGES="zh_CN.GB18030"
LC_PAPER="zh_CN.GB18030"
LC_NAME="zh_CN.GB18030"
LC_ADDRESS="zh_CN.GB18030"
LC_TELEPHONE="zh_CN.GB18030"
LC_MEASUREMENT="zh_CN.GB18030"
LC_IDENTIFICATION="zh_CN.GB18030"
LC_ALL=
上面均说明LC_CTYPE(字符辨识编码)表示这个系统的系统现在使用的字符集是zh_CN.GB18030,LC_NUMERIC(数字系统的显示讯息)等其它与语言相关的变量。通常如果其它的语言变量都未设定,仅设定LANG这个变量就可以缺省代替所有其它变量了。
 

二、修改字符集的方式
需注意的是:如果默认语言是en_US.UTF-8,在Linux的字符和图形界面下都是无法显示和输入中文的。如果默认语言是中文,比如zh_CN.GB18030 或者zh_CN.gb2312,字符界面无法显示和输入,图形界面可以。
修改的方式有如下两种:
1、直接设置变量的方式修改,命令如下两条命令:
[root@david ~]# LANG=xxx 或者  export  LANG=xxx;
[root@david ~]# LC_ALL=”xxx”  或者  export LC_ALL=”xxx”;
注:xxx为欲修改为的字符集
查看标准的字符集的方法,locale –a命令,常用的有zh_CN.GB2312、
zh_CN.GB18030或者zh_CN.UTF-8、en_US.UTF-8等
但是上述修改方式只会在当前shell中生效,新建shell此环境变量消失。
故平时登录系统执行“LANG= ”这个命令的时候显示的就没有乱码的缘故,意思就是取消了字符集的显示,取消字符集还可以执行[root@david ~]# unset LANG这个命令。
2、修改文件方式,通过修改/etc/sysconfig/i18n文件控制
[root@david ~]# vim /etc/sysconfig/i18n
LANG="zh_CN.GB18030"  即为系统的语言
SUPPORTED="zh_CN.UTF-8:zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en" 
SYSFONT="lat0-sun16"
修改文件保存退出之后要生效要执行如下命令才可生效
[test@pan ~]$ source /etc/sysconfig/i18n

我的问题:

Java文件是UTF-8编码,SSH客户端是UTF-8编码,Linux Shell是zh_CN.gbk,执行后打出来的日志是乱码,设置LANG="zh_CN.utf8",LC_ALL="zh_CN.utf8"后解决。

你可能感兴趣的:(Linux)