1.术语说明
i18n(internationalization):对一个软件或者相关技术为了使这个软件能潜在处理世界内多种语言和习俗。
l10n(localization):在一个已经被国际化的软件上,实现某种特定的语言。
从程序员的观点来看以下这三个概念:
l10n模型 -- 本地化模型
i18n模型 -- 国际化模型
l17n模型 -- 多语言模型
2.l10n模型
目的:支持两种语言或字符编码,ASCII和另一种编码
例如:Nemacs, Hanterm X
缺点:程序员必须熟知这种语言
3.i18n模型
目的:可以支持多种语言,但同一时刻只支持其中的两种,ASCII和另一种
相关技术:
通常通过LANG环境变量指定另一种特定语言
locale, gettext, wide characters and multibyte
4.l17n模型
目的:同一时刻支持多种语言
相关技术:
UTF-8, unicode
5.字符编码系统(Character Coding System)的重要概念
5.1 基本技术
Character -- 组成语句和文本的独立单位
Glyph -- 一个字符的可视信息
Encoding -- 在计算机中,用字节或位的组合来表示文本和字符的规则
Character Set -- 字符的集合
Coded Character Set(CCS) -- 定义在RFC_2050中的术语,这是一个字符集合,集合中的每个字符都有唯一一个数字来表达
Character Encoding Schema -- 定义在RFC_2050中的术语,使用一个或多个CCS构建一种编码的方法
这里值得记住的重要概念是:
Encoding = 一个或多个CCS + 一个CES
5.2 Stateless和Stateful
我们知道我们可以构建一种编码而使用多个CCS,我们知道CCS必须有唯一的数字表达,那我们如何构建这种编码而使得不同的CCS间不发生冲突呢?有两种办法可以解决。
a) 所有的CCS里的字符都有唯一的数字表达。
b) 允许不同的CCS中的字符有相同的数字表达,同时使用一个编码(例如某个esc序列)来切换SHIFT状态,为的是选择某种编码。
a)这种编码不含有SHIFT状态,称为Stateless;b)这种编码含有SHIFT状态,称为Stateful
5.3 多字节编码
非多字节编码 -- 一个字符总是用一个字节表达。例如:ISO-8859-1, ISO-8859-2, VISCII等。
多字节编码 -- 一个字符可以用一个或者多个字节表达。例如:EUC-JP, EUC-KR, ISO 2022-JP, SHIFT-JIS, Big5, UHC, UTF-8等。
5.4 字节个数,字符个数以及列数
一个ASCII字符总是用一个字节表示,且在控制台或者X终端上占据一列列宽。
在Stateful编码中,esc序列不表示任何字符
列数没有在任何一个标准中被定义,然而通常来说,CJK汉字(汉语,日语,韩语)在控制台或者X终端上占据两列列宽。
阅读(1283) | 评论(0) | 转发(0) |