GB T 16681-2003 信息技术 开放系统中文界面规范.pdf
《GB T 16681-2003 信息技术 开放系统中文界面规范.pdf》由会员分享,可在线阅读,更多相关《GB T 16681-2003 信息技术 开放系统中文界面规范.pdf(314页珍藏版)》请在麦多课文档分享上搜索。
1、GBj166在1-2003前言本标准代替GB/T16681-1996(信息技术开放系统中文界面规范儿本标准与GBjT16681-1996相比,主要变化如下z1.原国标的国际化函数的字符界面部分16类共77个亟数(原是以UNIXSR飞T4.0为依据的用IS0/1EC 9899,19901 Amd. 1 ,1995 Programming languag臼CAmendment 1 , C lntegrity部规定,作了校订。2.原国标的圆形界面部分的函数是以XllR5为基础的,已过时3玉昆依据XllR6并参黑了一些实现系统,重新制定。3.原因标附录A,是以GB2312-1980为依据制定必POSI
2、XP文特征文件。现吕家要求,中文系统的字符集,应以GB1803 2白白G为依据。为此,制定了以GB18030-2000为依据她posrx中文辛苦征文件,作为本标准的正式文件,放在附录A中。4.参黑Linux的L1l8NUX20白白,补充了在L1l8NUX2000中规定,而原因标中未包含的几十个层际化的字符界面的函数。吕荫,放在附录C中。本标准的附录A是规范位附录,附录B和国古录C是资料性附录。本标准由中华人民共和国信息产业部提出。本标准由信息产业部电子工业标准化研究所归口e本标准起草单位:中软网络技术股份有限公司、信息产业部电子工业标准化研究所。本标准主要起萃入z题明德、冯惠、欧llIl春生、
3、郭峰BE GB/T 16681-2003 f言患技术开敢系统中文界面规范1 范噩本标准定义开放系统中文平台应用程序编程界面,IjO服务功能界Jli以及图形界菌。本标准适用于开放系统中文平台部开发、应用和基于该环境的中文处理软件的集成。2 纲范性引用文件下列文件中的条款通过本标准的引用而成为本标准的条款。凡是注B朔的引用文件,其随后所有豹修改单不包括黯误的内容或修订版均不适用于本标准,然而,鼓励根据本标准达成协议的各方研究是否可使用这些文件的最新版本e凡是不注5期始引用文件,其最新版本适用于本标准。GB/T 1988-19S信息处理信怠交换用七位编码字符集(eqvISO 646 :1 991)
4、GB 2312-1980信怠交换用汉字编码字符集基本集GBI5261-1臼4信息处理七位和八位编码字符集用的控刽功能(抽ISO6429 :1 988) GBI7408-1994 数据元章程交换格式信怠交换a期和时间表示法(eqvISO 8601 , 1988) GBj11383-1989信息处理信息交换用八位代码结构和编码规则(idtISO 4873,186) GB 12345-1的G信息交换用汉字编码字符集辅助集GB 13000. 1-1993 信怠技术通用多人位编码字符集 nt mbtowc( wchar_t善pwc cQnst char赞s,Slze_t时,说明如果s不是空(null)指
5、针,那么m旨to曹c()先确定由s指向的字符的字节数,然后确定与该字符格对应的wchar_t型的宽字符代码值(与空字符等价的宽字符代码值是零入如果该字符是有效的并旦pwc不是空指针,mbtowc()把宽字符代码值存放在pwc援部的目标中。本函数受当前语境LCCTYPE影响,对于依赖于状态的编码,通过将自变量s重为空来洞房本函数,使函数设置为初始状态要后续部源用,如果自变量s非空,则使函数的初始状态根据需要改变e如果编码依赖于状态,那么自变量s为空指针部满周使本亟数返回一个非零值,否则返回零。如果在实现中使用一些特殊字节来改变切换状态,那么这些字节不生成独立的宽字符代码,而是与一个领邻的字符组合
6、在一起。改变当前的LCCTYPE使本函数始初始状态不确定。本函数最多检查s指归的数级中的n个字节。返回当s是空指针时,如果字符编码依赖于状态,那么函数目btowcO返回个非零值g郊果编码不依赖于状态,JiIlJ函数返回零值。当s是非空指针对,如果s指向空字节,那么mbtowcO返回零a或者如果n个或少于2个字节组成了有效韵多字节字符,则返应多字暂的字符数z或者如果是无效字符,则属数返回1并置errno以示出错。不会返回大于n或者MB_CUR_MAX宏的筐。出错mbtowcO函数遇到以下情况,则失败a若gEILSEQ 检测到无效字符序列。b)获取字符的字节数。名称mblen 格式# includ
7、e int mblen(const c且ar传s,sze_t n) ; 说碗如果s不是空指针,mblenO稳定出s指向剖字符串的字节数s除了mbtowc的切换状态不受影响之外,它等价于23 GB/,16681-2003 4 mbtowc( (wchar_t骨)O,s,n);本属数受当前语境LC_CTYPE影哥哥。对于依赖于状态的编码,通过将自变量s置为空来调用本磊数,使运数设置为初始状态p后续的词用.如果自变量s在空,则使画数的初始状态根据需要改变。如果编码依赖于状态,那么自变量s为空指针的读周使本函数返回一个非零值,否则返回零。如果在实现中使用一些特殊字节来改变切换状态,jJ么这些字节不生成
8、独立的宽字符代码,丽是与一个招邻的字符经合在一起。改变当前的LC_CTYPE使本亟数的初始状态不确定。返回当8是空指针肘,如果字符编码依旗子状态,那么函数屈垣len()返回一个非零值g如果编码不依赖于状态,那函数返吕零值。当s是非空指针对,如果s指向空字节,那么mblen仆返回零z或者如果n个或少于n个字节组成了有效的多字节字符,则返因多字节字符的字节数;或者如果是无效字符,则函数返归-1并置errno以示出错。不会返回大于在或者MBCUR MAX宏豹值。出错血blenO函数遇到以下情况,那失败a若3EILSEQ 检测到元效的字符序列。c)把宽字符转换为字符。名称wctom垣格式# inclu
9、deint wctomhC char赘s,wchar_twchar); 说明wctomb size_t mhstowcs( wchar全赞pwcs,const char餐ssize_tn); 说明白bstowcs()把从s指向的数级以初始切换状态开始的字符序列转换成对应部宽字符代码序列,并把不多子n个宽字符代码存放在pwcs指向的数绍中。空符空符将被转换成一个值为零舵宽字符代码)后西部字符不会被检查和转换a涂了mbtowc()切换状态不受影响外,每个字符治转换就像混用mbtowcC)一样。pwcs指向的数组中不会修改多于在个元素,如果复常H!标重叠,其行为未定义。本量E数受当前语境的LC_CT
10、YPE影响。如果pwcs是一空指针,mbstowcsC)返回整个数组要求的长度(不受n的徨部影响。但无值存错。返回如果遇到一无效字符rnbs乞OWCS()返归(size_t)1.并且置errno以示出错$否则mbS乞OWCS()返回被转换的数组元素的个数(或者如果p曹cs是空指针,那是所需的个数),不包括作为终止符的零代码。如果返回信是口,数经不以零代码终止。出错mbstowcs()遇到以下情况,IjjIJ失效。若zEILSEQ 检测到无效的字节序列。时把宽字符串转换为字符串。名称百cstombs格式# i ncl ude Slze_t wcstornbs(char赞s,const wchar
11、 t祷pwcs.sze_t n); 说明wcstombs( )转换自pwcs指向的数经中的宽字符代码序列为以初始切换状态开始的字符序列,并把这些字符存放在s指向的数组中,若超出了总共为n个字节的限制或者存放了个空字节,转换停止。除了wctomb()的切换状态不受影响外,每个宽字符的转换就像词用wctom以)祥。本函数受当前语境的LC_CTYPE影响。s指向的数经中最多修改a个字节2如果复制吕标重叠,其行为未定义。如果s是一个空指针,wcstomb叫)返回整个字符数组所需的字节数不管应的值7。但无值存储。返回如果遇到一宽字符代码,它不对应有效字符单字节或多字节),wcstombs( )返回(si
12、ze_t)1 ;否则,wcstombsC)返回存储在字符数组中的字节数,不包括作为终止符的空字节。如果返回值是。,数组不以空终止。出错5 GBjT 16681-2003 wcstombsO 遇到以下情况,则失败。若zEILSEQ 宽字符码没有相对应的有效字符。2.2 1jO功能5 a)从流中获取宽字符代码。名称fgetwc 格式# nclude 菩includewint_t fgetwc(FILE特S立ream); 说明fgetwc( )从stream指向刘输入流中获取下一个字符如果存在),再将该字符转换成对应的宽字符代码,并且下移相关的流的文件指示器(主日果已定义九如果出现错误,流的文件位置
13、指示器的值不确定efgetwc( )可以为更新而标记stream相关的文件的st_at1me域e如果fgetc(人fgetwc(人fgetws( )、fread( ), fscanf ( )、getc( )、getchar( )、gets( )或scanf( )第一次成功地从strea目中获取的数据,不是前画ungetcC)或者unget胃c()的调用提供始,则为更新商标记st_atme域。返回fgetwc( )的成功词用将从引ream指向的输入流中读取字符并返回对泣的wmtt型的宽字符代码e如果流到了文件尾.流部文件结束指示器将被设置并且fgetwc()返回WEOF,郊果发生渎错误,设置流的
14、出错信怠指示器.fgetwc( )返回WEOF并且置errno以示出错。出错fgetwcO将失败,若需要读数据旦zEAGAIN 对于基于民ream的文件描述符设置。_NONBLOCK标志旦进程在fget胃c()操作期间将被延迟e二EBADF基于stream的文件描述符不是为读打开的有效文件描述符。二EINR读操作由于接收到信号而终止,无数据传送。EIO 发生物理的1/0错误,或在后台进程组中的进程企图从它的控制终端读旦或者进程正忽略或阻断SIGTTIN信号或是孤儿进程纽oJ吃错误也可也实现有关始原因产生。二EOVERFLOW文件是普通文件旦企图在流梧应的最大文件偏移处或超出处读efgetwcC
15、)遇到以下情况,则失效。若:二ENOMEM无充足的存储空何可用。ENXIO 请求不存在她设备或超出了设备的能力cEILSEQ 从输入流得到的数据不形成有效字符。初从波中获取宽字符3名称getwc 格式# indude* nclude wlnt_t get曹cCFILE铸strea四), 说明GB/T 16681-2003 getwc( )等份子fgetwc(),除了作为宏实现,它可能多次计算s白白白,所以自变量不能是具有边缘效应的表达式。返回见fgetwcC)。出错见fgtwcO。c)从标准输入中获取宽字符c名称gerwchar 格式# include wint_t getwchar(void
16、)参说明getwchar( )的功能等价子杏出以stdn)0 返回见fgetwc()。出错见fgetwcO0 d)从流中获取-宽字符串。名称fgetws 格式* nclude非include wchar_t铸fget听到wchart骨ws,ntn ,FILE stream) ; 说明fgetws( )从stream中不断渎取字符并转换成对应的宽字符代码,把结果存放在ws指向的wchar_t型数经中,直到读取了n一1个字符,或者是遇到换行符换行符被转换并存放到w纱,或者遇到文件尾为止。子是用以宽字符表示的空符结束ws宽字符串。如果出现错误,流灼文件位置指示器的值将不确定。fgetws( )可以为
17、更新商标记stream相关始文件的st_atlme域。如果fgetcC)、fgetwc()、fgetwsC人fread( )、fscanf( )、getc( )、getchar( )、gets( )或scanfC )第一次成功地从stream中获取的数据,不是吉trlilungetcC )或者ungetwc()始满用提供的,那为更新商标记8t atlme域。返回直至成功完成,fgetws()返回ws。如果遇到文件尾,设置流的文件结束指示器并且fgetwsC )返回空指针。如果发生读错误,设置流的出错信息指示器,fgetwsC)返回空指针并且重errno以示出错。出错见fgetwcO0 7 GB
18、I16681-2003 E e)在流上输出lt字符代码。名称fputwc 格式# include # includewlnt_乞fputwc(wint_乞wc,FILE赞stream); 说明fputwc( )范与宽字符代码wc对应的字符写到IJstream指向的输出流中血流相关的文伶位置指示器若己定义)指示的位置,并且适当下移流的文件位置指示器。如果文件不能支持定位请求,或者流是以附加方式打开的,字符将附加到输出流后e当写字符出现错误时,输出文件的切换状态将窗在未定义状态。在对同一流鹤fputwc()与下次fflush()或fclose()的成功调用之间,或者与词用exit()或abort(
19、 )之阂,将为更新商标记文件的5tctlme和stmtlme域。返应如果成功.fputwc()返回WCo否则返屈WEOF,设置流揭出错信息指示器,并且置errno以示出错,出错fputwc()将失败,或者流是未缓冲的或在stream的缓冲器中的数据需要写旦zEAGAIN二对于基于stream的文件描述符设置。NONBLOCK标志呈进程在写操作中被延迟。EBADFl EFBIGJ 基本stream的文件描述符不是有效的为写雨打开的文件描述符。企图穹超出最大文件尺寸或进程文件尺寸限制的文件s=EFBIG 文件是普通文件且企留在与相应的流格关的最大镜移处或超出处写。二EIl;TR写操作由于接收了信号
20、而终止且无数据转换。=EIO 发生了物理1/0错误,或进程是后台进程毯的成员企图写至它的控制终端,设置OSTOP进程既不忽略也不阻断SIGTTOU且进程的进程组是孤儿进程组。i地错误也可在实现有关的条件下返回eENOSPC 在包含文件的设备上无自由空间aEPIPE 企图写至未出任何进程为读打开的管道或FIFO。向进程送SIGPIPE信号。fputwc()遇到以下情况,男IJ失败。若zENOMEM 元充足的可用的存储空间。ENXIO 在不存在的设备上请求或请求超出了设备的能力。二EILSEQJ宽字符码wc不梧应有效字符a。把一宽字符输出jlJ流上。名称purwc 格式# include # in
21、cludewnt_t putwc (wint_t wc,FILE是stream)。说骂Zputwc( )等价于fputwc().除了作为宏实现,它可能多次计算stream,所以自变量不能是具有边缘效应的表达式c返回见fputwc仆。出错见fputwc仆。g)把宽字符写至标准输出设备。名称pu艺矶rchar格式1* include wmt_t put冒ch町(wntr_twc); 说明pu乞wchar(wc)等价于putwc(wc ,stdout) , 返回见fputwc(儿出错见fputwc()。U在流上输出宽字符串g名称fput、“5格式1* i口clude 1* includ int fp
22、utws (const wchar_t提ws,FILE费stream); 说明GB/T 16681-2003 fputws( )把与ws指向的以空结束的宽字符事对应的字符写入stream指向的流中。不写入与终止的空宽字符代码幸自对应的字符。在对同一流的fputwc()与下次fflush()或fclose()的成功调用之间,或者与满月exit()或abort( )之间,将为更新而标记文件的st_ct1me手flst_mtime域。返回如果成功,fputws()返回一非负数s否则返回一L置流的出错信息指示器并且置errno以示出绪。出错见fputwc()。i)挖一宽字符代码放回输入流。名称unge
23、t飞“0格式1* include 1* include wint_t ungetwc (wnt_t wc, FILE铸stream)多说明ungetwc( )把与宽字符代码wc相对应的字符放回stream指向的输入流a被放园的字符将9 GB/T 16681-20号3在下次从流中读Bt按放部相反的顺序返图。分子其i胃部文件定位远数(fseek()、fsetpos() 或rewind()的一次成功满用用由s盯eam指向的流)会废弃放回流(stream所指向始流)中的字符。与派对应的外部存储将不做改变e放回一个字符是可以保证的,若ungetwc()在同一流中词用太多次,而没有读文件或者文件定位操作来
24、做间隔,操作可能失败。如果wc的值等于宏WEOF的值,操作失败并旦输入流不做改变eUngetwc( )的成功词用将清除流的文伶结束指示器。在读操作或者清除所有放回字符之后的文件位置指示器的值与放回字符前是一样的。每一次ungetwc()的成功词用将使文件位置指示器减小(减小1或更多),如果在满周之前它的值是零,在满用之后它的值将不确定c返因如果成功,ungetwc()返回与放回字符相对应的宽字符代码佳,否则它返回WEOF,!I:l错ungetwc()遇到以下情况,则失效。若zEILSEQ 检榄到无效字符序列或宽字符码不相应于有效字符e4.2.3 串操作功能10 a)连接两个宽字符串,名称wcs
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GB 16681 2003 信息技术 开放系统 中文 界面 规范
