关闭

GB2312、UTF-8等编码转换函数iconv()使用方法

标签: GB2312UTF-8ciconv编码
328人阅读 评论(0) 收藏 举报
分类:

用于GB2312、UTF-8等字符编码的转换,一次转换需要调如下三个函数:

(1) iconv_t iconv_open(const char *tocode, const char *fromcode);
此函数说明将要进行哪两种编码的转换,tocode是目标编码,fromcode是原编码,该函数返回一个转换句柄,供以下两个函数使用。

(2) size_t iconv(iconv_t cd,char **inbuf,size_t *inbytesleft,char **outbuf,size_t *outbytesleft);
此函数从inbuf中读取字符,转换后输出到outbuf中,inbytesleft用以记录还未转换的字符数,outbytesleft用以记录输出缓冲的剩余空间。

(3) int iconv_close(iconv_t cd);
此函数用于关闭转换句柄,释放资源。

 

注意:iconv函数的出参inbytesleft和outbytesleft的值会改变。

以上函数的使用可以根据需要自己封装成一个函数,万变不离其宗。

#include<stdio.h>
#include<iconv.h>
int main()
{
	char inbuf[30] = "我是一只小小鸟";
	char outbuf[120] = {0};

	iconv_t cd = iconv_open("GBK", "UTF-8");
	char *in = inbuf;
	char *out = outbuf;
	size_t inlen = 30;
	size_t outlen = 120;
	printf("1 in:%p, inbuf:%p, out:%p, outbuf:%p \n", in, out, inbuf, outbuf);
	iconv(cd, &in, (size_t)&inlen, &out, &outlen);
	outlen = strlen(outbuf);
	printf("%s\n", outbuf);
	printf("2 in:%p, inbuf:%p, out:%p, outbuf:%p \n", in, out, inbuf, outbuf);
	iconv_close(cd);
}


 

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:28349次
    • 积分:511
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:1篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论