📄 00000004.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: yanglc (魂归燕园), 信区: Linux <BR>标 题: 五 目前中文化中存在的问题 <BR>发信站: BBS 水木清华站 (Sun May 14 22:33:07 2000) <BR> <BR>www.linuxforum.net <BR> <BR>Subject Linux 国际化本地化和中文化(五) <BR>Posted by yumj <BR>Posted on 5/12/2000 10:35 AM <BR> <BR> <BR>五 目前中文化中存在的问题 <BR> <BR>现有的国际化标准中存在许多问题, 问题的原因主要出自目前的 国际化架构. 对于中 <BR>文化来说, 这些问题显得更加突出. <BR> <BR>1. 编码动态切换的问题 <BR> <BR>对中文软件来说, 同时支持多内码(GB和Big5)是比较完善的中文软件, 但是动态 <BR>切换内码, 特别是切换软件界面(如菜单项)的内码, 是受到信息 (Message)国际 <BR>化中 gettext 的限制的. 一般来说, 一旦软件载入, 所有 文本信息便被初始化, <BR>而且在整个过程中不会再重新装载信息. 退一步说, 即使重新装载了信息, 由于 <BR>所装载信息的长度发生了变化, 软件界面调整 布局也是十分困难的. <BR> <BR>所以现有软件的动态编码切换仅仅是在部分区域实现, 例如Netscape. 遗憾的是, <BR>Netscape的编码切换并不彻底, 它切换的仅仅是显示部分, 输入 部分仍然有问 <BR>题. 比如在zh_CN.GBK的环境下启动Netscape, 当切换到有 输入条的繁体中文页 <BR>面时, 如果采用输入软件自动识别Input Context的 编码的方式, 仍然会认为 <BR>Netscape是GB编码, 输入结果不正确. 如果输入 Big5编码, 必须缩定输出的编码 <BR>为Big5. Chinput在这方面做了一些尝试, 结论是可以输入Big5编码, 但是在输入 <BR>条中的显示不正确. <BR> <BR>一般来说, 使用中文平台来动态切换编码更容易实现. 在中文Linux 的发布版本 <BR>中, 有几个是可以使用中文平台来实现动态切换编码的, 其原理 十分简单, 只要 <BR>在应用程序或X服务器把某个窗口的编码状态记住就行了, 以后的文本显示和输入 <BR>都以此编码为标准. 这种方法的缺点是, 应用程序 初始界面上的中文由于转化了 <BR>编码变成了乱码. <BR> <BR>2. 中文编码自动识别问题 <BR> <BR>在文本浏览,网页浏览或网页翻译时, 通常需要自动识别汉字的内码, 但是中文的 <BR>GB编码和Big5编码有重叠区域, 所以很难区分开. 目前公开 源代码的识别软件很 <BR>少, 识别结果不能令人满意, 远没有达到目前商业软件 的识别水平. <BR> <BR>3. Linux上的中文平台到国际化的过渡 <BR> <BR>但是从长远的角度看, 因为中文在对中文显示和输入上与国际化标准 存在很大差 <BR>异, 所以亟需一种从中文平台到国际化标准的过渡性方案. 在 过渡的过程中, 中 <BR>文平台可能会和国际化标准共同存在一段时间. <BR> <BR>以CLE和TurboLinux为例, 它们在早期的版本中都采用了中文平台来 支持中文的 <BR>显示和输入, 随着支持国际化标准的软件的增多, 逐步采用了 中文平台和国际化 <BR>标准共同存在的版本作为过渡性版本. 到目前为止, 已经 在缺省情况下放弃中文 <BR>平台的使用. 中文平台只是作为残留物包含在发布 版本中. <BR> <BR>4. Linux 文档中文化 <BR> <BR>Linux文档, 主要是指Linux上的一些命令帮助文档(man文件), 软件 手册和说明, <BR>软件本身的Message文件(po). 目前在这方面的工作还缺乏 统一的管理和广大 <BR>Linux爱好者的参与. <BR> <BR>参考资料 <BR> <BR>* Unicode: <A HREF="http://www.unicode.org/">http://www.unicode.org/</A> <BR>* 香港增补字符集: <A HREF="http://www.digital21.gov.hk/chi/hkscs/introduction.html">http://www.digital21.gov.hk/chi/hkscs/introduction.html</A> <BR>* CJK 有关信息: <A HREF="ftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/cjk.inf">ftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/cjk.inf</A> <BR>* Linux国际化资料: <A HREF="http://i18n.linux.org.tw/">http://i18n.linux.org.tw/</A> <BR>* Linux国际化标准: <A HREF="http://www.li18nux.org/.">http://www.li18nux.org/.</A> <A HREF="http://">http://</A> <BR>* MicroSoft 国际化: <A HREF="http://www.microsoft.com/globaldev/">http://www.microsoft.com/globaldev/</A> <BR> <BR>六 附录 <BR> <BR>1. 宽字符处理函数函数与普通函数对照表 <BR> <BR>字符分类: <BR> <BR>宽字符函数 普通C函数 描述 <BR>iswalnum() isalnum() 测试字符是否为数字或字母 <BR>iswalpha() isalpha() 测试字符是否是字母 <BR>iswcntrl() iscntrl() 测试字符是否是控制符 <BR>iswdigit() isdigit() 测试字符是否为数字 <BR>iswgraph() isgraph() 测试字符是否是可见字符 <BR>iswlower() islower() 测试字符是否是小写字符 <BR>iswprint() isprint() 测试字符是否是可打印字符 <BR>iswpunct() ispunct() 测试字符是否是标点符号 <BR>iswspace() isspace() 测试字符是否是空白符号 <BR>iswupper() isupper() 测试字符是否是大写字符 <BR>iswxdigit() isxdigit() 测试字符是否是十六进制的数字 <BR> <BR>大小写转换: <BR> <BR>宽字符函数 普通C函数 描述 <BR>towlower() tolower() 把字符转换为小写 <BR>towupper() toupper() 把字符转换为大写 <BR> <BR>字符比较: <BR> <BR>宽字符函数 普通C函数 描述 <BR>wcscoll() strcoll() 比较字符串 <BR> <BR>日期和时间转换: <BR> <BR>宽字符函数 描述 <BR>strftime() 根据指定的字符串格式和locale设置格式 <BR>化日期和时间 <BR>wcsftime() 根据指定的字符串格式和locale设置格式 <BR>化日期和时间, 并返回宽字符串 <BR>strptime() 根据指定格式把字符串转换为时间值, <BR>是strftime的反过程 <BR> <BR>打印和扫描字符串: <BR> <BR>宽字符函数 描述 <BR>fprintf()/fwprintf() 使用vararg参量的格式化输出 <BR>fscanf()/fwscanf() 格式化读入 <BR>printf() 使用vararg参量的格式化输出到标准输出 <BR>scanf() 从标准输入的格式化读入 <BR>sprintf()/swprintf() 根据vararg参量表格式化成字符串 <BR>sscanf() 以字符串作格式化读入 <BR>vfprintf()/vfwprintf() 使用stdarg参量表格式化输出到文件 <BR>vprintf() 使用stdarg参量表格式化输出到标准输出 <BR>vsprintf()/vswprintf() 格式化stdarg参量表并写到字符串 <BR> <BR>数字转换: <BR> <BR>宽字符函数 普通C函数 描述 <BR>wcstod() strtod() 把宽字符的初始部分转换为双精度浮点数 <BR>wcstol() strtol() 把宽字符的初始部分转换为长整数 <BR>wcstoul() strtoul() 把宽字符的初始部分转换为无符号长整数 <BR> <BR>多字节字符和宽字符转换及操作: <BR> <BR>宽字符函数 描述 <BR>mblen() 根据locale的设置确定字符的字节数 <BR>mbstowcs() 把多字节字符串转换为宽字符串 <BR>mbtowc()/btowc() 把多字节字符转换为宽字符 <BR>wcstombs() 把宽字符串转换为多字节字符串 <BR>wctomb()/wctob() 把宽字符转换为多字节字符 <BR>输入和输出: <BR> <BR>宽字符函数 普通C函数 描述 <BR>fgetwc() fgetc() 从流中读入一个字符并转换为宽字符 <BR>fgetws() fgets() 从流中读入一个字符串并转换为宽字符串 <BR>fputwc() fputc() 把宽字符转换为多字节字符并且输出到标 <BR>准输出 <BR>fputws() fputs() 把宽字符串转换为多字节字符并且输出到 <BR>标准输出串 <BR>getwc() getc() 从标准输入中读取字符, 并且转换为宽字 <BR>符 <BR>getwchar() getchar() 从标准输入中读取字符, 并且转换为宽字 <BR>符 <BR>None gets() 使用fgetws() <BR>putwc() putc() 把宽字符转换成多字节字符并且写到标准 <BR>输出 <BR>putwchar() getchar() 把宽字符转换成多字节字符并且写到标准 <BR>输出 <BR>None puts() 使用fputws() <BR>ungetwc() ungetc() 把一个宽字符放回到输入流中 <BR> <BR>字符串操作: <BR> <BR>宽字符函数 普通C函数 描述 <BR>wcscat() strcat() 把一个字符串接到另一个字符串的尾部 <BR>wcsncat() strncat() 类似于wcscat(), 而且指定粘接字符串的 <BR>粘接长度. <BR>wcschr() strchr() 查找子字符串的第一个位置 <BR>wcsrchr() strrchr() 从尾部开始查找子字符串出现的第一个位 <BR>置 <BR>wcspbrk() strpbrk() 从一字符字符串中查找另一字符串中任何 <BR>一个字符第一次出现的位置 <BR>wcswcs()/wcsstr() strchr() 在一字符串中查找另一字符串第一次出现 <BR>的位置 <BR>wcscspn() strcspn() 返回不包含第二个字符串的的初始数目 <BR>wcsspn() strspn() 返回包含第二个字符串的初始数目 <BR>wcscpy() strcpy() 拷贝字符串 <BR>wcsncpy() strncpy() 类似于wcscpy(), 同时指定拷贝的数目 <BR>wcscmp() strcmp() 比较两个宽字符串 <BR>wcsncmp() strncmp() 类似于wcscmp(), 还要指定比较字符字符 <BR>串的数目 <BR>wcslen() strlen() 获得宽字符串的数目 <BR> <BR>wcstok() strtok() 根据标示符把宽字符串分解成一系列字符 <BR>串 <BR>wcswidth() None 获得宽字符串的宽度 <BR>wcwidth() None 获得宽字符的宽度 <BR> <BR>另外还有对应于memory操作的 wmemcpy(), wmemchr(), wmemcmp(), wmemmove(), <BR>wmemset(). <BR>2. X 窗口系统下支持中文的函数 <BR> <BR>支持西文的函数 支持中文的函数 描述 <BR>XLoadFont XCreateFontSet 载入字体集 <BR> <BR>XTextExtents(16) Xmb/wcTextExtents 返回文本的限制框 <BR>Xmb/wcTextPerCharExtents <BR>XDrawString Xmb/wcDrawString 在窗口中画字符串, 背景填充 <BR>XDrawImageString Xmb/wcDrawImageString 在窗口中画字符串 <BR>XDrawText Xmb/wcDrawText 在窗口中画字符串 <BR>XLookupString Xmb/wcLookupString 查找字符串 <BR> <BR>3. 支持国际化的高层库 <BR>o OSF/Motif <BR>o Qt/kdelib <BR>o gtk+/gnome-lib <BR>o Perl <BR>o Java <BR>4. 支持多语言的典型软件 <BR>o 浏览器 Netscape <BR>o 编辑器 XEmacs <BR>o 编辑器 Mule <BR>o 编辑器 vim <BR>o 终端 rxvt <BR>o 排版软件 LaTeX/lyx <BR>o PostScript/PDF: gs/acroread <BR>o 图像处理: gimp <BR>o 幻灯片制作 mgp <BR>o 即将完成: StarOffice, KOffice <BR>5. 支持Unicode的软件 <BR>o 高级图形库函数 Qt 2.x <BR>o Java 语言开发工具 JDK <BR>o 编辑器 yudit <BR>o 专用的支持Unicode的 X 终端 <BR>o 基于GTK+的文本处理器 GScript <BR> <BR> <BR>Linux is my life. <BR>=>欢迎访问主页 <BR> <BR> <BR> <BR> <BR>-- <BR>※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.121] <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -