iconv gbk字符转utf8字符

时间:2023-03-09 21:58:50
iconv gbk字符转utf8字符

直接上代码

bool gbk2utf8(const char* src, char* dest, size_t inlen)
{
const char *inbuf = src;
size_t outlen = inlen * ;
char *outbuf = dest;
memset(outbuf, , outlen);
iconv_t cd = iconv_open("UTF-8", "GBK");
/* iconv接口会改变inbuf和outbuf,所以不能直接使用src和dest */
size_t res = iconv(cd, &inbuf, &inlen, &outbuf, &outlen);
iconv_close(cd);
return ( == res) ? true : false;
}

示例:

    boost::shared_array<char> ptr_iType(new char[ilen * ]);
gbk2utf8("中文测试", ptr_iType.get(), ilen);

此处使用了boost的智能指针,减少内存泄漏的可能。