iconv编码转换

来源:互联网 发布:先锋网络电视官网 编辑:程序博客网 时间:2024/05/22 01:57

最近在实习,用到libiconv编码转换,标记下吧:

/********************************************************************************************** Function:ConvertEnc* Description:          字符编码转换* Param:                char *encFrom源编码("UTF8")*                       char *encTo目标编码("gb2312")*                       const char * in要转换的字符串** Return:返回值为转换后的字符串,如果转换失败,就返回为NULL* Modify:2011/8/15* Comment:示例printf("%s", Convert("utf-8", "gb2312", (char *)xmlNodeGetContent(cur)));*********************************************************************************************/char* ConvertEnc( char *encFrom, char *encTo, const char * in){int lenin, lenout, ret;char *sin, *sout;//打开一个编码流iconv_t c_pt;if ((c_pt = iconv_open(encTo, encFrom)) == (iconv_t)-1){printf("iconv_open false: %s ==> %s", encFrom, encTo);return NULL;}iconv(c_pt, NULL, NULL, NULL, NULL);lenin  = strlen(in) + 1;lenout = 1024;char* bufout = new char[1024];memset(bufout,0,1024);sin   = (char *)in;sout   = bufout;//编码转换ret = iconv(c_pt,(const char**)&sin, (size_t *)&lenin, &sout, (size_t *)&lenout);if (ret == -1){delete[]bufout;iconv_close(c_pt);return NULL;}//关闭编码流iconv_close(c_pt);return bufout;}