本节描述宽字符和字符串输入输出的功能,字符分类和简体中文字符集转换功能等。Solaris 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的特别例程(例如iscxxx)在头栏文件zh/xctype.h中宣告。
使用通用多字节转换工具的程序应该包含三个头栏文件:wctype.h、widec.h、和zh/xctype.h。
locale/xctype.h头栏文件宣告与中文语言环境相关的例程,这些例程的名字具有相同的形式iscxxxx:
象前节描述的分类功能一样,这些功能的使用受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格式之间对字符和字符串作转换。要使用这些例程必须连接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位) |