使用iconv对文字进行编码转换
上一篇 /
下一篇 2008-01-29 09:41:45
/ 个人分类:linux编程
iconv的函数定义在头文件iconv.h中
iconv()运行需要一个iconv_t类型的转换描述符,声明方法:
iconv_t cd;
cd=iconv_open("to_charset1","from_charset");
这样就生成了一个转换描述转换符cd。
转换方法:
size_t iconv (iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)
cd:转换描述符
**inbuf: 待转换的字符串
*inbytesleft: 待转换的字符串长度
**oubuf: 一段内存空间用于存放转换后得到的字符串,此指针会随着转换的字节数增加被而向前移动,use be caution.
*outbytesleft: outbuf所指向的内存区域的剩余空间
例子
#include <stdio.h>
#include <stdlib.h>
#include <iconv.h>
#include <string.h>
int main()
{
iconv_t cd;
char instr[]="汉字";
char *inbuf;
char *outbuf;
char *outptr;
unsigned int insize=strlen(instr);
unsigned int ōutputbufsize=10;
unsigned int avail=outputbufsize;
unsigned int nconv;
inbuf=instr;
ōutbuf=(char *)malloc(outputbufsize);
ōutptr=outbuf; //使用outptr作为空闲空间指针以避免outbuf被改变
memset(outbuf,'\0',outputbufsize);
cd=iconv_open("gbk","utf-8"); //将字符串编码由utf-8转换为gbk
if(cd==(iconv_t)-1)
{
printf("fail.\n");
}
nconv=iconv(cd,&inbuf,&insize,&outptr,&avail);
printf("%s\n",outbuf);
return 0;
}
相关阅读:
- shell快捷键 (kuyu_2001, 2007-12-07)
- vmstat命令详解 (kuyu_2001, 2007-12-07)
- Perl操作Mysql数据库 (kuyu_2001, 2007-12-07)
- sed命令详解 (kuyu_2001, 2007-12-07)
- linux下gdb单步调试 (kuyu_2001, 2007-12-07)
- vi快捷键 (kuyu_2001, 2007-12-07)
- Makefile的编写 (kuyu_2001, 2007-12-07)
- epoll简介 (kuyu_2001, 2007-12-07)
- sigaction (kuyu_2001, 2008-1-25)
- 新手学Linux编程 (货运公司, 2008-1-28)
导入论坛
收藏
分享给好友
管理
举报
TAG: