Showing posts with label 字符集. Show all posts
Showing posts with label 字符集. Show all posts

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


就到这里.