Thursday, September 20, 2012

RHEL下 中文乱码的问题



最近,遇到了乱码的问题,因为作为一个中国人, 便少不了用到中文.
我安装的是RHEL 5.4 ,安装的时候选择的是英文系统, 后来才知道, 对于LINUX来说没用什么系统之分,看你环境怎么设置了.
我就不说乱码的问题都出现在哪里了,总之, 下面讲述 中文乱码的问题.

1.首先来说语言环境的设置问题
查看当前系统的locale设置

  • Last login: Thu Sep 13 19:12:19 2012
  • [root@databaseserver ~]# locale
  • LANG=en_US.UTF-8
  • LC_CTYPE="en_US.UTF-8"
  • LC_NUMERIC="en_US.UTF-8"
  • LC_TIME="en_US.UTF-8"
  • LC_COLLATE="en_US.UTF-8"
  • LC_MONETARY="en_US.UTF-8"
  • LC_MESSAGES="en_US.UTF-8"
  • LC_PAPER="en_US.UTF-8"
  • LC_NAME="en_US.UTF-8"
  • LC_ADDRESS="en_US.UTF-8"
  • LC_TELEPHONE="en_US.UTF-8"
  • LC_MEASUREMENT="en_US.UTF-8"
  • LC_IDENTIFICATION="en_US.UTF-8"
  • LC_ALL=
  • [root@databaseserver ~]#

查看当前系统支持的locale环境
  • [root@databaseserver ~]# locale -a | grep zh_CN
  • zh_CN
  • zh_CN.gb18030
  • zh_CN.gb2312
  • zh_CN.gbk
  • zh_CN.utf8
  • [root@databaseserver ~]#
如果locale支持的语言环境没有中文的的话,我们来手动点添加一下

  • [root@databaseserver ~]# cd /usr/share/i18n/charmaps/
  • [root@databaseserver charmaps]# ls -l |grep GB
  • -rw-r--r-- 1 root root 472428 Jul 17 2009 GB18030.gz
  • -rw-r--r-- 1 root root 1603 Jul 17 2009 GB_1988-80.gz
  • -rw-r--r-- 1 root root 44803 Jul 17 2009 GB2312.gz
  • -rw-r--r-- 1 root root 119113 Jul 17 2009 GBK.gz
  • [root@databaseserver charmaps]# gunzip GB18030.gz
  • [root@databaseserver charmaps]# localedef -f GB18030 -i zh_CN /usr/lib/locale/zh_CN.GB18030

locale设置
  • [root@databaseserver charmaps]# vim /etc/sysconfig/i18n
文件配置
  • LANG="en_US.UTF-8"
  • SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en:zh_CN.GB18030:zh_CN.GBK:zh_CN.GB2312"
  • SYSFONT="latarcyrheb-sun16"

注意,其实在这个文件里,只有这三个变量就够了,
LANG 随自己设置, 如果想选英文系统显示,则 LANG="en_US.UTF-8"
如果选中文显示,则LANG="zh_CN.UTF-8" 或 "zh_CN.GB18030"
视情况而定
SUPPORTED就是系统显示支持的字符集了, 比如你默认的系统显示( LANG="en_US.UTF-8" )是英文的,但是访问firefox的时候要显示中文编码的网页,这里就用着了, 或者有中文的软件,这里也就用着了
后面那个系统字体,一般不用动了, 也最好不要动.

注意这个 文件的设置影响的是整个操作系统的locale,
要改变某个用户的 locale环境, 应该具体对待,比如 db2用户locale就可以在 /home/db2/.i18n 这个文件设置,或者在.bash_profile里设置,具体的用户设置在这里就不赘述了.


以上是locale的设置与配置,
但是要真正能正常显示中文字符.有个必须的步骤要做,
就是安装中文字体,不然,即使locale设置好了,没有相应的字符集,字体支持,于事无补的.
下面来说说字体的安装

要正常显示中文,安装如下的包
  • fonts-chinese-3.02-9.6.el5.noarch.rpm
  • fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm

中文输入支持
中文输入法
  • scim-libs-1.4.4-39.el5.i386.rpm
  • scim-1.4.4-39.el5.i386.rpm
  • scim-chinese-standard-0.0.2-1.el5.i386.rpm
  • scim-tables-0.5.6-7.i386.rpm
  • scim-tables-chinese-0.5.6-7.i386.rpm
  • scim-pinyin-0.5.91-15.el5.i386.rpm

另外推荐的安装包,如果以上包安装后有问题的话
  • fontconfig-2.4.1-7.el5.i386.rpm
  • fontconfig-devel-2.4.1-7.el5.i386.rpm
  • m17n-db-common-cjk-1.3.3-46.el5.noarch.rpm
  • m17n-db-chinese-1.3.3-46.el5.noarch.rpm


就到这里.