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);
}