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

用于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);
}


 

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Jeffrey0000/article/details/49906693
个人分类: 学习笔记
上一篇C语言获取时间字符串
下一篇C语言常见字符串操作函数
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭