使用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;
}

相关阅读:

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-10-12  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 7318
  • 日志数: 42
  • 建立时间: 2007-12-07
  • 更新时间: 2008-08-13

RSS订阅

Open Toolbar