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

原创 2015年11月18日 14:37:48

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


 

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android的字符编码转换问题,Unicode,GB2312,UTF8等

/* jernymy 2011-12-01 * Android word encoder process, need libicuuc.so Api * just a example **/ /...
  • jernymy
  • jernymy
  • 2011年12月01日 18:44
  • 17051

ASP中Utf-8与Gb2312编码转换乱码问题的解决方法 页面编码声明

出现这样的问题是当你浏览UTF-8编码的时候,服务器默认用UTF-8的引擎来输出html,当你用再浏览GB2312的页面时,它还是用UTF-8来输出本应是GB2312编码的页面所以会乱码。  为...

php使用iconv进行从utf-8转为gb2312字符编码出错解决方案

原文:http://www.path8.net/tn/archives/2560 在php函数库有一个函数:iconv() 把gb2312置换成utf-8 $text=iconv("GB...
  • pestd
  • pestd
  • 2011年09月29日 11:11
  • 312

form提交时的字符编码转换之utf-8转gb2312

  在IE下面指定表单提交编码方式 收藏 在跨业务、跨网站发送数据或者业务升级的时候,我们有的时候需要指定发送数据的编码方式,比如页面是utf-8编码的,而发送出去的数据却希望是GB2312编码的。在...
  • fox_lht
  • fox_lht
  • 2011年05月10日 15:44
  • 12492

VBS和ASP中的各种编码转换GB2312、UTF-8、Unicode、URL解码、二进制、十进制代码、十六进制

'UTF转GB---将UTF8编码文字转换为GB编码文字 function UTF2GB(UTFStr) for Dig=1 to len(UTFStr) '如果UTF8编码文字以%开头...
  • wqsys
  • wqsys
  • 2012年07月21日 10:11
  • 2877

access数据库编码转换:将将UTF8替换为GB2312

代码
  • Draling
  • Draling
  • 2016年08月17日 12:56
  • 2396

GBK(GB2312)向UTF-8的编码转换 -- C++

转:http://hi.baidu.com/ilotus_y/blog/item/aec98cf32e4f6c55342accf3.html GBK(GB2312)向UTF-8的编码...

自动将visual stdio创建的文件从gb2312编码转换成utf8编码

cocos2d-x是一个不错的手机游戏框架,不过由于在中文的windows系统下使用visual stdio2008默认创建的类文件,包括.h和.cpp,其文件编码都是gb2312的。当将这些文件在c...

字符编码(ASCII、ANSI、GB2312、UTF-8等)系统梳理

引言 在显示器上看见的文字、图片等信息在电脑里面其实并不是我们看见的样子,即使你知道所有信息都存储在硬盘里,把它拆开也看不见里面有任何东西,只有些盘片。假设,你用显微镜把盘片放大,会看见盘片表面凹凸不...

php中iconv函数使用方法 php 字符集转换 GBK 转 UTF-8

iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库。 1、下载libiconv函数库http://ftp.gnu.org/pub/gnu/libiconv/libico...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GB2312、UTF-8等编码转换函数iconv()使用方法
举报原因:
原因补充:

(最多只允许输入30个字)