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


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值