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 在这里看起来应该是乱码才对。