免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4211 | 回复: 3
打印 上一主题 下一主题

[SCO UNIX] 有人遇到过使用LIBICONV的问题吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-13 17:16 |只看该作者 |倒序浏览
环境IGITAL OSF1.

安装了libiconv.

程序中调用了2个函数.
iconv_open正常.

iconv()转换时,报错误:
errno=116,
illegal byte sequence.

论坛徽章:
0
2 [报告]
发表于 2010-05-13 17:19 |只看该作者
  char * ConvertEnc( char *encFrom, char *encTo, const char * in)
  {
  static char bufin[1024], bufout[1024], *sin, *sout;
  int mode, lenin, lenout, ret, nline;
  iconv_t c_pt;
  if ((c_pt = iconv_open(encTo, encFrom)) == (iconv_t)-1)
  {
   printf('iconv_open false: %s ==> %s\n', encFrom, encTo);
   return NULL;
  }
  iconv(c_pt, NULL, NULL, NULL, NULL);
  lenin = strlen(in) + 1;
  lenout = 1024;
  sin = (char *)in;
  sout = bufout;
  ret = iconv(c_pt, &sin, (size_t *)&lenin, &sout, (size_t *)&lenout);
  
  if (ret == -1)
  {
   return NULL;
  }
  iconv_close(c_pt);
  return bufout;
  }

调用的代码ConvertEnc("gb2312","utf-8","字符转换");

论坛徽章:
0
3 [报告]
发表于 2010-05-14 15:38 |只看该作者
本帖最后由 iamzxx 于 2010-05-14 18:08 编辑

参考了ICONV.C 中的代码,
把int 改为 size_t类型后,
SINLEN=SIZEOF(BUFOUT)
搞定.

论坛徽章:
0
4 [报告]
发表于 2010-05-14 18:12 |只看该作者
崩溃!
转全中文如"数据库"正确.

转中英文混合的字符串又出了问题.

OUTBUF=ConvertEnc("gb2312","utf-8","字符转换:FSGS");
的输出, 变成输入后:
=ConvertEnc("utf-8","gb2312",OUTBUF);

出错,illegal bype sequence.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP