csatblogspotdotcom

Friday, November 28, 2008

locale的设定

Linux和Windows交互时经常出现乱码,原因就是字符集不一样,这也涉及到一个服务器端和客户端两端的字符集的设定:例如,ssh登录要涉及远程服务器字符集和ssh客户端显示的字符集。只要两边的字符集一致,一般的话就不会有问题。

客户端软件的字符集设置就不说了,下面只说服务器端。
如果只是临时改变,那么可以直接用export命令,例如:export LANG="zh_CN.GB18030"
如果想一劳永逸,则:
在Ubuntu的/etc/environment文件中(redhat系的是/etc/sysconfig/i18n,其中i18n代表internationalization,国际化i和n中间有18个字母)加入:
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"
SYSFONTACM="8859-15"
.或source或重新登录后就可以了。
注:如果/etc/environment或/etc/sysconfig/i18n中什么都没有,则会使用默认locale:
C locale(或被叫做POSIX locale)。

顺便说一下,locale出的几个变量的区别
(sun的这篇文章中有详细介绍
http://docs.sun.com/app/docs/doc/817-2521/6mi67tj36?a=view)
其优先级是:LC_ALL > LC_* >LANG,LANG的优先级最低
而LANG和LANGUAGE的区别:
LANG - Specifies the default locale for all unset locale variables
LANGUAGE - Most programs use this for the language of its interface
前者是所有未赋值的locale变量的默认值,而后者是应用程序的接口语言

后记:今天发现SYSFONTACM这个选项够烦的,启动时老是提示没文件或文件夹,以前就注意到了SYSFONTACM=8859-15时启动过程老是报错:8859-15:No such file or directory,现在SYSFONTACM=utf8时又这样,改成utf-8还这样,于是干脆在i18n中删相应行,再重启就没这个问题了。

下面是我的i18n文件的内容:

LANG="en_US.UTF-8"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh:zh_CN.GB18030:zh_CN.GB2312:zh_CN.GBK:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"
#SYSFONTACM="utf8"

后记1:
今天配vnc时按这个配置,桌面及菜单又出现了乱码,真是麻烦,于是把语言改为英语,支持的语言包括中文,
/etc/sysconfig/i18n内容如下

LANG=C

SUPPORTED="zh_CN.UTF-8:zh_CN:zh:zh_CN.GB18030:zh_CN.GB2312:zh_CN.GBK:en_US.UTF-8:en_US:en"

SYSFONT="latarcyrheb-sun16"

SYSFONTACM="8859-15"

后记2:
今天把中文输入法搞好后,发现还是无法显示中文,当然也输入不了中文,无论怎么修改
/etc/sysconfig/i18n文件都不管用,后来搜了一下,有可能是系统中文包没装,
rpm -qa|grep fonts-chinese后果然没有,于是
yum install fonts-chinese
终于支持中文了

后记3:
对了,忘把相应的
/etc/sysconfig/i18n
贴出来了:

LANG="en_US.UTF-8"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh:zh_CN.GB18030:zh_CN.GB2312:zh_CN.GBK:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"
SYSFONTACM="8859-15"

注意:"LANG=C"(最原始的!)是不行的,这样仍然会出现乱码,而且输入中文时虽然输入法列出了汉字但敲空格后没反应。

后记4:
今天又装了一次rhel5,英文方式安装,装好后再安装中文字体fonts-chinese和输入发scim,发现居然不行,所有中文全为方块,但putty登录的终端中可以输入中文,后来把所有的
*font*
都装上了
scim*
也装了,结果还是不行,重启也不行
花了我好半天时间,搞死我了,最后发现居然是字体缓存的原因,运行命令
fc-cache -fv
后就正常了;不过也有可能是某个服务的原因,因为之前关闭了几个没用的服务。


BTW,字体文件夹是/usr/share/fonts/
安装新字体只需把字体拷贝到字体文件夹就可以了,不行的话再更新字体缓存。

Labels: ,

4 Comments:

At November 29, 2008 at 5:05 AM , Anonymous Anonymous said...

今天配vnc时按这个配置,桌面及菜单又出现了乱码,真是麻烦,于是把语言改为英语,支持的语言包括中文,
/etc/sysconfig/i18n内容如下

LANG=C

SUPPORTED="zh_CN.UTF-8:zh_CN:zh:zh_CN.GB18030:zh_CN.GB2312:zh_CN.GBK:en_US.UTF-8:en_US:en"

SYSFONT="latarcyrheb-sun16"

SYSFONTACM="8859-15"

 
At November 30, 2008 at 12:12 AM , Anonymous Anonymous said...

今天把中文输入法搞好后,发现还是无法显示中文,当然也输入不了中文,无论怎么修改
/etc/sysconfig/i18n文件都不管用,后来搜了一下,有可能是系统中文包没装,
rpm -qa|grep fonts-chinese后果然没有,于是
yum install fonts-chinese
终于支持中文了

 
At November 30, 2008 at 12:21 AM , Anonymous Anonymous said...

对了,忘把相应的
/etc/sysconfig/i18n
贴出来了:

LANG="en_US.UTF-8"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh:zh_CN.GB18030:zh_CN.GB2312:zh_CN.GBK:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"
SYSFONTACM="8859-15"

注意:"LANG=C"(最原始的!)是不行的,这样仍然会出现乱码,而且输入中文时虽然输入法列出了汉字但敲空格后没反应。

 
At January 13, 2009 at 6:16 PM , Anonymous Anonymous said...

今天又装了一次rhel5,英文方式安装,装好后再安装中文字体fonts-chinese和输入发scim,发现居然不行,所有中文全为方块,但putty登录的终端中可以输入中文,后来把所有的
*font*
都装上了
scim*
也装了,结果还是不行,重启也不行
花了我好半天时间,搞死我了,最后发现居然是字体缓存的原因,运行命令
fc-cache -fv
后就正常了;不过也有可能是某个服务的原因,因为之前关闭了几个没用的服务。


BTW,字体文件夹是/usr/share/fonts/
安装新字体只需把字体拷贝到字体文件夹就可以了,不行的话再更新字体缓存。

 

Post a Comment

Subscribe to Post Comments [Atom]

<< Home