简体中文 Solaris 用户指南

附录 B 逆向兼容性

本附录包含有关使程序与早期亚洲版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 字符,返回真值。 

有两个添加的简体中文的例程,iscgbisceuc,测试GB-2312-80字符集中的字符。iscgb例程的自变量是一个宽字符,而isceuc的自变量是EUC格式的GB-2312-80字符。要获得更多的信息可参见cctype(3x)的手册页。

表 B-2 通用简体中文通用字符分类功能

例程 

描述 

iscgb

如果自变量是在GB-2312-80中的字符,返回真值。 

isceuc

如果自变量是在GB-2312-80中的EUC格式字符,返回真值。 

简体中文转换工具

本节描述宽字符和字符串输入输出的功能,字符分类和简体中文字符集转换功能等。Solaris 7 软件配有一个宽字符库以根据工业标准处理简体中文字符代码。

与中文语言相关的例程收集在它们自己的特指语言库中,该库按其相应的C编译器选项连接。简体中文Solaris的libcle库依选项-lcle实行连接。

要获得更多的信息,参见有关的手册页。

亚洲版Solaris软件将WC定义为定常宽度、四字节代码。WC使用ANSI C数据类型wchar_t,Solaris软件在wchar.h头栏文件中将该类型定义为:

typedef long wchar_h;

在 Solaris 软件环境里,long 是四字节的数据类型。

转换工具

本节所描述的转换功能可供使用,然而你应该将iconv()作为标准功能使用。

简体中文Solaris软件提供了用于各种转换的工具,例如:

使用通用多字节转换工具的程序应该包含头栏文件widec.hwctype.h。简体中文 Solaris的特别例程(例如iscxxx)在头栏文件zh/xctype.h中宣告。

使用通用多字节转换工具的程序应该包含三个头栏文件:wctype.hwidec.h、和zh/xctype.h

locale/xctype.h头栏文件宣告与中文语言环境相关的例程,这些例程的名字具有相同的形式iscxxxx:

象前节描述的分类功能一样,这些功能的使用受setlocale功能所控制(在本章其它地方和其它章中描述)。

与语言环境相关的转换例程(例如中文cgbtoeuc)收集在libcle库里。

编译期间,这个库可以用C语言编译器选项-lcle进行连接。

代码集内的转换

多字节转换功能与单字节转换功能touppertolower相似。这些功能将宽字符转换成其它宽字符。要获得更多关于转换例程的信息,参见手册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格式之间对字符和字符串作转换。要使用这些例程必须连接libcle库,可使用 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-8080格式(7位) 

seuctocgb

将一个字符串从EUC格式转换成GB-2312-8080格式(7位) 

sneuctocgb

将一个字符串的一部分从EUC格式转换成GB-2312-8080格式(7位) 

二进制兼容包(BCP)

在中文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应用程序之间的非兼容性使得无法在它们之间剪取和粘贴中文字符。