|
发表于 2004-7-20 13:07:02
|
显示全部楼层
简单地提供一些信息给你:要知道更多,就自己去查资料
国家汉字字符集标准:1980年的GB2312,和2000年的GB18030
linux核心有支持posix标准的NLS子系统.系统通过locale识别,去支持不同的字符集标准
ls /usr/lib/locale-->看看你的linux装上了哪写locale.
目录/usr/lib/locale/zh_CN.gb18030下的一系列文件,构成了支持GB18030标准的locale
如果要使用gb18030编码的中文,简单的设置环境变量LANG=zh_CN.gb18030,或其他环境变量LC_ALL,LC_TYPE等,这些变量有特定的使用优先级
linux内部使用的编码是UTF-8(国际统一字符集标准ISO 10646(或unicode)在linux和unix上使用的具体形式),保证任何语言任何字符在linux内部都有唯一的编码
其实turetype字体文件中使用的编码就是unicode--意味者要查找一个字苻的字形,必须知道这个字符的unicode编码
当一个中文程序运行是,使用setlocale()函数设置使用的locale.比较"标准"的做法是根据当前的环境变量指定的locale设置
glib会根据程序的locale,在处理字符时调用特定字符集的转换函数,把字符编码转换成UTF-8编码,然后进行处理,如,显示字符时寻找字体...处理完还要转换回来
这种字符转换函数就放在/usr/lib/gconv目录下地共享库里面:处理GB18030的函数就在/usr/lib/gconv/GB18030.so里面拉
所有地内码转换模式,都在文件/usr/lib/gconv/gconv-modules里面
如下面的两行就定义了从内部编码(UTF-到GB18030的互相转换使用的代码在GB18030.so
# from to
module GB18030// INTERNAL GB18030 1
module INTERNAL GB18030// GB18030 1
如果有少数民族的同胞开发对本民族语言的支持,可以很简单的完成,需要
搞一个locale(使用localedef创建),并编写转换函数,编译到glib中,当然,如果要显示,还要有字体支持
---------不小心,竟然写了这么多.累
--------这是我对linux支持多语言的认知和理解,请大家指教 |
|