简体中文 Solaris 用户指南

简体中文转换实用程序

本节描述宽字符和字符串输入输出函数、字符分类函数和简体中文字符集的转换函数。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 软件提供了用于各种转换的工具,例如:

使用通用多字节转换实用程序的程序应该包含头文件 widec.hwctype.h。简体中文 Solaris 的特定例程(例如 iscxxx)在 zh/xctype.h 中声明。

使用通用多字节转换实用程序的程序应该包含三个头文件:wctype.hwidec.hzh/xctype.h

locale/xctype.h 头文件声明与中文语言环境特定的例程,这些例程的名称具有相同的形式 isc xxxx

与前一节中介绍的分类功能一样,这些功能的使用会受 setlocale 功能的控制(本章的其他地方和其他章节将介绍此功能)。

特定于语言环境的转换例程(例如中文 cgbtoeuc)收集在 libcle 库中:

编译时通过 C 编译器选项 -lcle 可链接此库。

代码集内的转换

多字节转换函数与单字节转换函数 touppertolower 类似。这些函数将宽字符转换成其他宽字符。有关转换例程的更多信息,请参见 wconv(3) 和 cconv(3) 手册页。

以下例程收集在常规中文 C 库中:

表 12–3 简体中文大小写转换函数(在 zh/xctype.h 中声明)

函数 

说明 

tocupper

将代码集 1 中的小写罗马字母转换成大写字母 

toclower

将代码集 1 中的大写罗马字母转换成小写字母 

简体中文代码集之间的转换

在简体中文字符集中,代码集 0 中的罗马字符和数字在代码集 1 中重复。下列函数测试宽字符。

表 12–4 简体中文代码集转换函数

功能 

说明 

atocgb

将 ASCII(代码集 0)中的字母或数字字符转换成相应的 GB-2312-80(代码集 1)中的字符。 

cgbtoa

将 GB-2312-80(代码集 1)中的字母或数字字符转换成相应的 ASCII (代码集 0)中的字符。 

有关这些函数的更多信息,请参见 cconv() (3x) 手册页。

简体中文字符代码的转换

以下例程对 GB-2312-80 字符集进行基于字符的代码转换。它们在 EUC 格式和 GB-2312-80 格式之间转换字符和字符串。要使用这些例程,必须使用 C 编译器选项 -lcle 链接库 lib cle。有关详细信息,请参见 cconv(3) 手册页。

表 12–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 位)