分类: LINUX
2005-10-19 11:22:25
# 20030916 由 LG 完成
一、文字编码的解析和显示
世界上文字多种多样,各个国家和地区的语言文字和符号各有特点也不是一个字节所能表示的,于是产生了各种字符集。编码所需的字节数量也不相同。但对于各种字符集的处理显示方式大同小异。
首先:确定是何种字符集编码。
其次:根据编码方式取得字符的编码确定字符。
再次:使用相应字符集字库,找到字符并显示
二、Linux文字处理方式
1、 使用locale系统确定字符集编码环境
2、 使用Xlocale系统在显示混合字符串时区分开(比如中英文混显)
3、 对字库进行索引并命名由专用系统管理(如xfs或Xserver直接管理)
4、 使用不同的字库处理模块对不同方式组成的字库进行处理转换
三、Locale系统作用和组成 (/usr/lib/locale 用于确定系统使用的locale编码解释方式,由操作系统使用)
Locale系统通过对系统变量LC_ALL、LANG的设置作为参考,在/usr/lib/locale/查找相应的环境设置目录以改变locale环境,如果没找到将用C(目录下设定的)环境。这个环境将确定对文字编码的处理方式并作为Xwindow系统和X软件确定运行环境的依据。主要有以下组成:
1、 LC_ALL系列参数和LANG参数,以备locale系统启动参考
2、 /usr/lib/locale/与LC_ALL等相应的环境目录,其内容用于locale环境设置
一些问题:
1、 locale软件可以列出LC_ALL系列变量值,但这些值不代表locale环境应用的值,他仅供locale环境启动时的参考。
2、 LANG变量的实际设置在$HOME/.i18n中(LANG=”zh_CN.gb18030”),这也就是在.bash_profile中设置了LANG但用locale时却没改变的原因。
3、 /usr/lib/locale/与LC_ALL等相应的环境目录及内容可以复制,这里提供自己生成的方法
cp /usr/share/i18n/charmaps/相应编码名.gz到tmp/(随便一个目录)
cp /usr/share/i18n/locales/zh_CN文件到tmp/
tmp/gunzip GB18030.gz=>GB18030
tmp/localedef -c –v –f GB18030 –i zh_CN ./zh_CN.gb18030
cp zh__CN.gb18030 /usr/lib/locale/
四、Xlocale系统作用和组成(/usr/X11R6/lib/X11/locale对中英文复合字串的解释处理,由Xserver使用)
X Locale 的主要作用是在显示混合字符串(比如中英文)时区分开并以字体集(FontSet) 显示. 目前比较重要的X高层库比如Motif/LessTif,gtk,qt等都支持字体集。X在应用时根据locale环境参数找到相应的XLC_LOCALE文件,以确定如何处理混合字串。主要有以下组成:
1、/usr/X11R6/lib/X11/locale/locale.alias处理方式的别名库
2、/usr/X11R6/lib/X11/locale/locale.dir处理方式索引库
3、/usr/X11R6/lib/X11/locale/相应目录/XLC_LOCALE处理方式库
运作方式:
1、 根据LC_ALL等参数由locale.alias库中找到相应编码处理方式全称(当LC_ALL = alias)
2、 当LC_ALL=fullname或获得全称后由locale.dir库中找到相应处理方式库路径
3、 读取XLC_LOCALE库确定处理方式
五、Gtk系统使用locale的方式(由GTK系统使用)
1、 在基于系统locale系统和Xlocale系统的处理基础上,根据/etc/gtk目录中的配置定义,调用/usr/lib/gconv目录中的模块对中文进行处理。
2、 修改 gtk 的字体定义
#vi /etc/gtk/gtkrc.zh_CN
修改后的内容如下:
style "gtk-default-zh-cn" {
fontset = "-misc-SimSun-medium-r-normal--14-*-*-*-*-*-*-*"
}
class "GtkWidget" style "gtk-default-zh-cn"
3、 为了使我们设置的TrueType字体能够在GNOME下面使用,必须修改GNOME的资源配置文件。编辑/etc/gtk/gtkrc.zh_CN文件,设置字体如下:
style "gtk-default-zh-cn" {
fontset = " -misc-simsun-medium-r-normal--14-0-0-0-p-0-*-* "
}
class "GtkWidget" style "gtk-default-zh-cn"
再编辑/etc/gnome/gtkrc.zh_CN文件,将所有的FontSet设置为:
fontset = "-misc-simsun-medium-r-normal--14-*-*-*-*-*-gb2312.1980-0"
此时运行startx进入GNOME桌面,就可以看到漂亮的TrueType中文字体啦!
六、安装字库
1、复制字库
2、建立相应字库索引库
3、通知Xserver或xfs使用字库 XF86Config 或者
4、设置相应字库转换模块
另:/usr/share/locale作用暂不清楚。
七、顺便说以下其他的
显示Windows下的中文文件名
如果你还装了中文Windows 95/98/Me,那么现在就可以显示中文文件名了。RedHat 7.1采用2.4.2的内核,可以支持
简体中文代码页。使用方法:在mount后加选项-o codepage=936,iocharset=cp936。为了永久生效,可以修改/etc/fstab
文件。例如我的/etc/fstab文件内容为:
LABEL=/ / ext2 defaults 1 1
/dev/hda1 /mnt/c vfat defaults,codepage=936,iocharset=cp936 0 0
/dev/hda7 /mnt/d vfat defaults,codepage=936,iocharset=cp936 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
/dev/hda10 swap swap defaults 0 0
关于中文输入可以看一下Chinput配置方法,我喜欢fcitx。