linux下字符串中汉字utf-8转gb2312中使用iconv函数时,一直返回-1

f1120c 2012-09-05 06:27:57
这个问题困扰我很久,请高手指教,部分代码如下:
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

..................

}
...全文
548 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tomhour 2012-11-25
  • 打赏
  • 举报
回复
iconv_open打开成功的返回才是0,失败的代码为-1
water85524 2012-11-07
  • 打赏
  • 举报
回复
楼主怎么解决的啊?跪求
f1120c 2012-09-06
  • 打赏
  • 举报
回复
你好,我是新手,通过调试,errno是9,上网查了下说是文件描述符错误
f1120c 2012-09-06
  • 打赏
  • 举报
回复
发现在虚拟机上iconv_open返回正常,而烧写到arm里iconv_open返回-1
qq120848369 2012-09-05
  • 打赏
  • 举报
回复
perror看错误,自己找问题。

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧