本附录包含有关使程序与早期亚洲版 Solaris 软件逆向兼容的信息。每一描述到的实用程序均受到支持,然而对于本版 Solaris,我们鼓励您使用在《Solaris 国际化开发人员指南》中所描述的 XPG4 国际化 API。
这些工具从各个角度测试简体中文 (GB-2312-80) 国家标准字符集。它们并且假定被测试的字符是国家标准字符集的一部分。
这些表格里的功能自变量必须是 WC wchar_t 里的字符。要获得更多的信息可参见 cctype (3x) 的手册页。
表 B-1 简体中文字符分类功能
例程 |
描述 |
---|---|
ischanzi |
如果自变量是在 GB-2312-80 中的汉字,返回真值。 |
iscaccent |
如果自变量是在 GB-2312-80 中的重音记号,返回真值。 |
iscphonetic |
如果自变量是在 GB-2312-80 中的语音符号,返回真值。 |
iscpinyin |
如果自变量是在 GB-2312-80 中的拼音符号,返回真值。 |
iscalpha |
如果自变量是在 GB-2312-80 中的罗马字母,返回真值。 |
iscdigit |
如果自变量是在 GB-2312-80 中的罗马数字,返回真值。 |
iscnumber |
如果自变量是在 GB-2312-80 中的数目,返回真值。 |
isclower |
如果自变量是在 GB-2312-80 中的小写罗马字母,返回真值。 |
iscupper |
如果自变量是在GB-2312-80中的大写罗马字母,返回真值。 |
iscblank |
如果自变量是在 GB-2312-80 中的空白字符,返回真值。 |
iscspace |
如果自变量是在 GB-2312-80 中的空格字符,返回真值。 |
iscgen |
如果自变量是在 GB-2312-80 中的图形符号或通用符号,返回真值。 |
iscsci |
如果自变量是在 GB-2312-80 中的科学符号,返回真值。 |
iscline |
如果自变量是在 GB-2312-80 中的规格线符号,返回真值。 |
iscunit |
如果自变量是在 GB-2312-80 中的单位字符,返回真值。 |
iscparen |
如果自变量是在 GB-2312-80 中的右括号或左括号,返回真值。 |
iscpunct |
如果自变量是在 GB-2312-80 中的标点符号,返回真值。 |
iscgreek |
如果自变量是在 GB-2312-80 中的希腊字符,返回真值。 |
iscrussian |
如果自变量是在 GB-2312-80 中的俄文字符,返回真值。 |
iscspecial |
如果自变量是在 GB-2312-80 中的希腊字符或俄文字符,返回真值。 |
ischira |
如果自变量是在 GB-2312-80 中的日文 Hiragana 字符,返回真值。 |
isckata |
如果自变量是在 GB-2312-80 中的日文 Katakana 字符,返回真值。 |
有两个添加的简体中文的例程,iscgb 和 isceuc,测试 GB-2312-80 字符集中的字符。iscgb 例程的自变量是一个宽字符,而 isceuc 的自变量是 EUC 格式的 GB-2312-80 字符。要获得更多的信息可参见 cctype (3x) 的手册页。
表 B-2 通用简体中文通用字符分类功能
例程 |
描述 |
---|---|
iscgb |
如果自变量是在 GB-2312-80 中的字符,返回真值。 |
isceuc |
如果自变量是在 GB-2312-80 中的 EUC 格式字符,返回真值。 |
本节描述宽字符和字符串输入输出的功能,字符分类和简体中文字符集转换功能等。Solaris 2.7 软件配有一个宽字符库以根据工业标准处理简体中文字符代码。
与中文语言相关的例程收集在它们自己的特指语言库中,该库按其相应的 C 编译器选项连接。简体中文 Solaris 的 libcle 库依选项 -lcle 实行连接。
要获得更多的信息,参见有关的手册页。
亚洲版 Solaris 软件将 WC 定义为定常宽度、四字节代码。WC 使用 ANSI C 数据类型 wchar_t, Solaris 软件在 wchar.h 头文件中将该类型定义为:
typedef long wchar_h;
在 Solaris 软件环境里,long 是四字节的数据类型。
本节所描述的转换功能可供使用,然而您应该将 iconv() 作为标准功能使用。
简体中文 Solaris 软件提供了用于各种转换的工具,例如:
在一个代码集里的字符的转换,例如将 ASCII 大写字母转换成小写字母。
在国家标准字符集不同的协议之间的转换,例如 GB 和 EUC 之间的转换。
代码格式之间的转换 (例如 EUC 和 WC 之间的转换)。
使用通用多字节转换工具的程序应该包含头文件 widec.h 和 wctype.h。简体中文 Solaris 的特别例程 (例如 isc xxx) 在头文件 zh/xctype.h 中被声明。
使用通用多字节转换工具的程序应该包含三个头文件:wctype.h、widec.h、和 zh/xctype.h。
locale/xctype.h 头文件声明与中文语言环境相关的例程,这些例程的名字具有相同的形式 isc xxxx:
像前节描述的分类功能一样,这些功能的使用受 setlocale 功能所控制 (在本章其他地方和其他章中描述)。
与语言环境相关的转换例程 (例如中文 cgbtoeuc) 收集在 libcle 库里。
编译期间,这个库可以用 C 语言编译器选项 -lcle 进行连接。
多字节转换功能与单字节转换功能 toupper 和 tolower 相似。这些功能将宽字符转换成其他宽字符。要获得更多关于转换例程的信息,参见 wconv (3) 和 cconv (3) 手册页。
以下例程收集在常规中文 C 库里:
表 B-3 简体中文大小写转换功能 (在 zh/xctype.h 中声明)
功能 |
描述 |
---|---|
tocupper |
将代码集 1 中的小写罗马字母转换成大写字母 |
toclower |
将代码集 1 中的大写罗马字母转换成小写字母 |
简体中文字符集中,代码集 0 里的罗马字符和数字在代码集 1 里重复出现。以下功能测试宽字符。
表 B-4 简体中文代码集转换功能块
功能 |
描述 |
---|---|
atocgb |
将在 ASCII (代码集 0) 里的字母或数字字符转换成相应的在 GB-2312-80 (代码集 1) 里的字符。 |
cgbtoa |
将在 GB-2312-80 (代码集 1) 里的字母或数字字符转换成相应的在 ASCII (代码集 0) 里的字符。 |
要获得更多的关于这些例程的信息,参见手册页 cconv() (3x)。
以下例程在 GB-2312-80 字符集上作基于字符的代码转换。它们在 EUC 格式和 GB-2312-80 格式之间对字符和字符串作转换。要使用这些例程必须连接 lib cle 库,可使用 C 语言编译器选项 -lcle 实现连接。要获得更多的信息,参见 cconv (3x) 手册页。
表 B-5 简体中文基于字符的功能
功能 |
描述 |
---|---|
cgbtoeuc |
将一个字符从 GB-2312-80 格式 (7 位) 转换成 EUC 格式 |
scgbtoeuc |
将一个字符串从 GB-2312-80 格式 (7 位) 转换成 EUC 格式 |
sncgbtoeuc |
将一个字符串的一部分从 GB-2312-80 格式 (7 位) 转换成 EUC 格式 |
euctocgb |
将一个字符从 EUC 格式转换成 GB-2312-80 格式 (7 位) |
seuctocgb |
将一个字符串从 EUC 格式转换成 GB-2312-80 格式 (7 位) |
sneuctocgb |
将一个字符串的一部分从 EUC 格式转换成 GB-2312-80 格式 (7 位) |
在中文 OpenWindows 2. x 或 Solaris 1. x 或 SunOS 4. x 等系统下编译的应用程序,其二进制格式与本中文 Solaris 发行的不同。然而通过使用目前中文发行所提供的二进制兼容包 (BCP),早期的应用程序无需经过重新编译即可在目前的释放上运作。
您的系统配置必须包含 SUNWowbcp,您才能够运行以下的命令。关于安装信息,可与您的系统管理员联系。
以下的 BCP 命令运行在早期 SunOS4. x / Solaris 1. x /Chinese OpenWindows 2. x 环境中编译的应用程序,而不需经过重新编译这些应用程序。其中的 OpenWindows V2 中文应用程序不再显示输入服务程序状态的区域。像下面实例所表明的一样,命令使用老名称 (old_application_name) 调用应用程序,并使用早期版本的指定语言环境名称 (oldlocale) 设置应用程序的基本语言环境、输入语言以及显示语言:
system% old_application_name -lc_basiclocale oldlocale -lc_inputlang oldlocale -lc_displaylang oldlocale |
要在目前的简体中文 Solaris 发行系统上运行编译成二进制代码的早期版本的 textedit 应用程序,可按下例键入:
system% textedit -lc_displaylang chinese -lc_basiclocale chinese -lc_inputlang chinese |
简体中文 Solaris 2.x 和 1.x 应用程序之间的非兼容性使得无法在它们之间剪取和粘贴中文字符。