iconv的一些问题

mao_pu_hua 2010-08-03 03:07:31
utf8str = "\xCE\xD2\xD4\xCE\xB5\xB9";
这串字符串在windows下面用printg打印结果是"我晕倒",在linux是打印不出来的。我想将其转化为utf-8编码,在linux下面打印出来。下面是代码,请各位大虾看看有问题问题,谢谢,我运行时候总是打印不出来。(机器上面确定能打印utf-8编码中文)
utf8str = "\xCE\xD2\xD4\xCE\xB5\xB9";
int MAXSIZE = 1024;
int utf8len = strlen(utf8str);
printf( "utf8len = %d\n", utf8len );

iconv_t cd = iconv_open("UTF-8", "GBK");

if( cd == (iconv_t)-1 )
{
printf( "error1\n" );
return ;
}
output = malloc( 1024 );
if( iconv( cd, &utf8str,&utf8len, &output, &MAXSIZE))
{
printf( "error2\n" );
return;
}
printf( "%s\n", output );
iconv_close(cd);
...全文
71 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mao_pu_hua 2010-08-03
  • 打赏
  • 举报
回复
非常感谢楼上!!!!
Coder_Granger 2010-08-03
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
#include <iconv.h>
#include <stdlib.h>

int main()
{
char gbk[1024] = "\xCE\xD2\xD4\xCE\xB5\xB9";
size_t max_size = 1024;
size_t gbklen = strlen(gbk);
iconv_t cd = iconv_open("UTF-8", "GBK");

if (cd == (iconv_t)-1) {
puts( "ERROR1" );
return ;
}

char *output = (char*) malloc(2048);
char *s=output;
memset(output, 0, 2048);

char *gbkin = gbk;
if (iconv(cd, &gbkin, &gbklen, &output, &max_size)) {
puts("ERROR2");
return;
}

puts(s);
iconv_close(cd);
}

shaozg168 2010-08-03
  • 打赏
  • 举报
回复
sf 帮顶

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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