linux下字符串中汉字utf-8转gb2312中使用iconv函数时,一直返回-1
这个问题困扰我很久,请高手指教,部分代码如下:
int code_convert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen)
{
iconv_t cd;
int rc;
char **pin = &inbuf;
char **pout = &outbuf;
cd = iconv_open(to_charset,from_charset);
if (cd==0)
return -1;
memset(outbuf,0,outlen);
if (iconv(cd,pin,&inlen,pout,&outlen)==-1)
return -1;
iconv_close(cd);
return 0;
}
int u2g(char *inbuf,int inlen,char *outbuf,int outlen)
{
return code_convert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);
}
void main()
{
char *buf; //用于存放utf-8字符串
char *out_buf; //用于存放gb2312字符串
int len=0;
...............
len=strlen(buf);
out_buf=(char *)malloc(4*1024);
memset(out_buf,0,4*1024);
rc= u2g(buf,len,out_buf,4*1024); //此时返回的一直是-1
..................
}