首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

linux下iconv()有关问题

2012-02-16 
linux下iconv()问题用iconv函数族写个程序进行编码转换,繁体-简体可是总是说:Invalidorincompletemultibyt

linux下iconv()问题
用iconv函数族写个程序进行编码转换,繁体-简体
可是总是说:Invalid   or   incomplete   multibyte   or   wide   character
可是明明是繁体啊:

#include   <stdio.h>  
#include   <string.h>  
#include   <iconv.h>  

int
main(int   argc,   char**   argv)
{
iconv_t   cd;
char*   in   =   strdup( "過 ");
char*   out   =   calloc(   sizeof(char),   16);
int   inlen,   outlen;

cd   =   iconv_open( "GB2312 ",   "BIG5 ");
if((iconv_t)-1   ==   cd)
{
perror( "iconv_open ");
return   -1;
}
printf( "要轉換的字符串是:%s\n ",   in);
if(-1   ==   iconv(cd,   &in,   &inlen,   &out,   &outlen))
{
perror( "iconv ");
free(in);
free(out);
iconv_close(cd);
return   -1;
}

printf( "inlen:%d   ---   outlen:%d\n%s@@@ ",   inlen,   outlen,   out);

free(in);
free(out);
iconv_close(cd);
}

[解决办法]
简体编码 gb2312 里也有繁体字啊,你的这些繁体还是 gb2312 编码的,不是 big5. 如果是 big5 在这里看起来应该是乱码才对。

热点排行