因为最近写了一个用来更新postgresql数据库内容的C++程序,而postgresql使用的是UTF-8的编码,所以需要做编码转换,当然就想到了iconv,就写了一个函数。在Redhat AS3上调试通过。
string gb18030_to_utf_8(const string &src)
{
string re;
const char *sfrom = src.c_str();
size_t slen = strlen(sfrom);
if (slen > (size_t)800)
{
slen = 800;
}
iconv_t cd;
if((cd = iconv_open("UTF-8", "GB18030")) < 0)
return re;
char *sin = (char *)sfrom;
char sto[800]={0};
char *dout = sto;
size_t dlen = 800;
if(iconv(cd, &sin, &slen, &dout, &dlen) < 0)
return re;
iconv_close(cd);
re = sto;
return re;
}