iconv(3)
来源:互联网 发布:java自学看什么书 编辑:程序博客网 时间:2024/06/05 19:35
ICONV(3) Linux程序员手册
名称
iconv – 完成字符集转换
语法
#include
size_t iconv(iconv_t cd,
char **inbuf, size_t *inbytesleft,
char **outbuf, size_t *outbytesleft);
描述
参数cd必须是由iconv_open函数创建的一个转换描述符。
主要的案例是inbuf和*inbuf非空的时候。在这种情况下,iconv函数转换一个多字符序列*inbuf到另一个多字符序列*outbuf。从*inbuf开始,会有最多*inbytesleft个字节被读取,并且会有最多*outbytesleft个字节被写入*outbuf。
iconv函数一次转换一个多字节字符,每转换一个多字节字符,*inbuf会自增并且*inbytesleft减去已经转换的字节数。同样,*outbuf和*outbytesleft也分别增加和减少相同的数值。同时它会更新cd的状态。转换工作会因为下面的四个原因而停止:
1. Inbuf遇到不正常的多字符序列。在这种情况下,它将errno设置为EILSEQ并且返回(size_t)(-1)。*inbuf处于不正常序列的开始处。
2. 输入字节完全被转换,比如,*inbytesleft已经减少到0。在这种情况下,iconv返回转换期间不可转换字符的数量。
3. 在输入中遇到不完全的多字符序列,并且终止于此。在这种情况下,它会设置errno的值为EINVAL并且返回(size_t)(-1)。*inbuf指向不完全的字符序列开始的地方。
4. 输出缓冲区空间不足,无法容纳已经转换好的字符。这种情况下,它设置errno值为E2BIG并且返回(size_t)(-1)。
一种不同的情况是,当inbuf或*inbuf为空,但是outbuf和*outbuf均不为空的时候。这时,iconv函数会试图将cd的状态设置为初始状态并且在*outbuf中存储相应的序列。最多有*outbytesleft个字符可能被写入。如果输出缓冲区没有足够的空间来存储这个重新安排的序列,errno会被设置为E2BIG并且返回(size_t)(-1)。另外,它会用写入字节的数量来分别增加和减少*outbuft和*outbytesleft的值。
第三种情况是,当inbuf或*inbuf为空,并且outbuf和*outbuf也为空的时候。这时,iconv函数会设置cd为刚初始化时的状态。
返回值
iconv函数返回转换了的,不能再逆向转换的字符的个数;可逆的转换不会计算在内。发生错误的时候,它设置errno的值为(size_t)(-1)。
错误
下面的错误可能会发生:
E2BIG:*outbuf空间不足。
EILSEQ:输入中含有不正常的字符序列。
EINVAL:输入中含有不完全的字符序列。
遵照
UNIX98
参考
iconv_open(3), iconv_close(3)
GNU 2001-11-15 ICONV(3)
名称
iconv – 完成字符集转换
语法
#include
size_t iconv(iconv_t cd,
char **inbuf, size_t *inbytesleft,
char **outbuf, size_t *outbytesleft);
描述
参数cd必须是由iconv_open函数创建的一个转换描述符。
主要的案例是inbuf和*inbuf非空的时候。在这种情况下,iconv函数转换一个多字符序列*inbuf到另一个多字符序列*outbuf。从*inbuf开始,会有最多*inbytesleft个字节被读取,并且会有最多*outbytesleft个字节被写入*outbuf。
iconv函数一次转换一个多字节字符,每转换一个多字节字符,*inbuf会自增并且*inbytesleft减去已经转换的字节数。同样,*outbuf和*outbytesleft也分别增加和减少相同的数值。同时它会更新cd的状态。转换工作会因为下面的四个原因而停止:
1. Inbuf遇到不正常的多字符序列。在这种情况下,它将errno设置为EILSEQ并且返回(size_t)(-1)。*inbuf处于不正常序列的开始处。
2. 输入字节完全被转换,比如,*inbytesleft已经减少到0。在这种情况下,iconv返回转换期间不可转换字符的数量。
3. 在输入中遇到不完全的多字符序列,并且终止于此。在这种情况下,它会设置errno的值为EINVAL并且返回(size_t)(-1)。*inbuf指向不完全的字符序列开始的地方。
4. 输出缓冲区空间不足,无法容纳已经转换好的字符。这种情况下,它设置errno值为E2BIG并且返回(size_t)(-1)。
一种不同的情况是,当inbuf或*inbuf为空,但是outbuf和*outbuf均不为空的时候。这时,iconv函数会试图将cd的状态设置为初始状态并且在*outbuf中存储相应的序列。最多有*outbytesleft个字符可能被写入。如果输出缓冲区没有足够的空间来存储这个重新安排的序列,errno会被设置为E2BIG并且返回(size_t)(-1)。另外,它会用写入字节的数量来分别增加和减少*outbuft和*outbytesleft的值。
第三种情况是,当inbuf或*inbuf为空,并且outbuf和*outbuf也为空的时候。这时,iconv函数会设置cd为刚初始化时的状态。
返回值
iconv函数返回转换了的,不能再逆向转换的字符的个数;可逆的转换不会计算在内。发生错误的时候,它设置errno的值为(size_t)(-1)。
错误
下面的错误可能会发生:
E2BIG:*outbuf空间不足。
EILSEQ:输入中含有不正常的字符序列。
EINVAL:输入中含有不完全的字符序列。
遵照
UNIX98
参考
iconv_open(3), iconv_close(3)
GNU 2001-11-15 ICONV(3)
- iconv(3)
- iconv
- iconv
- iconv
- iconv
- iconv
- iconv
- iconv
- iconv
- 使用gSOAP开发实例(3) iconv解决中文乱码问题
- 使用gSOAP开发实例(3) iconv解决中文乱码问题
- 使用gSOAP开发实例(3) iconv解决中文乱码问题 .
- 使用gSOAP开发实例(3) iconv解决中文乱码问题
- 使用gSOAP开发实例(3) iconv解决中文乱码问题
- 乱码 iconv
- iconv 使用
- Text::iconv
- iconv 命令
- 经典学习网址
- TCPMP播放器UI的修改方法
- 如何使用google解决问题
- 图像处理2--打开多个摄像头
- WINCE TCPMP应用一:TCPMP概述
- iconv(3)
- MySQL 存储引擎简介
- WINCE TCPMP应用二: COMMON.DLL解析
- 提问的智慧(How To Ask Questions the Smart)
- SWT与Swing的比较
- WINCE TCPMP应用三:TCPMP的播放模块
- 计算数据库表某一列的和
- [初识总结]开源即时通讯IM Openfire+spark and (comet实现)
- WINCE TCPMP应用四:利用TCPMP插件开发程序