iconv_open函数
iconv_open——申请一个字符集转换的描述符
#include <iconv.h>
iconv_t iconv_open(const char* tocode,const char* fromcode)
描述:
iconv_open()函数申请一个转换描述符,转换字符序列从编码fromcode到编码tocode
转换描述符包含转换状态,调用iconv_open创建以后,转换状态处于初始状态,调用iconv函数以后改变转换描述符的转换状态,(意味着转换描述符不能在多线程中同时使用)
返回值:
iconv_open函数返回一个新申请的转换描述符,出错时,返回(iconv_t)-1;
int code_utf8_gbk(char *inbuf,size_t inlen,char *outbuf,size_t outlen)
{
iconv_t cd;
int rc;
char **pin = &inbuf;
char **pout = &outbuf;
cd = iconv_open("GBK","UTF8"); //第一步先确定编码格式,返回转换描述符
if (cd==0)
return -1;
memset(outbuf,0,outlen);
if (iconv(cd,pin,&inlen,pout,&outlen) == -1) //第二部把想要转化的字符串pin和想要输出的字符串pout放到刚刚申请的转换描述符中中进行转换
return -1;
iconv_close(cd); //关闭描述符
return 0;
}
<span style="font-family:Times New Roman;">int main()
{
char buf[256]="你好";
char buff[256]="";
code_utf8_gbk(buf,1024,buff,1024); //调用函数
}
</span>
如果遇到了一些问题,可以自行进行(char *)转换。
不管什么编码格式,只要把编码格式和想要的格式填入函数就可以了。