- 论坛徽章:
- 0
|
在SOLARIS下装了个libiconv库,编译以下程序为:
gcc -L/usr/local/iconv/lib -o conv conv.c -liconv
#include "/usr/local/iconv/include/iconv.h"
#include <strings.h>;
#define BUFLEN 200
char inbuf[BUFLEN];
char outbuf[BUFLEN];
char* pin = inbuf;
char* pout = outbuf;
int inlen;
int outlen = BUFLEN;
main(int argc, char **argv)
{
iconv_t cd;
ssize_t n;
bzero(inbuf, BUFLEN);
strncpy(inbuf, argv[1], BUFLEN);
if((cd = iconv_open(argv[3], argv[2])) == (iconv_t)-1) //argv2 = from, argv3 =to
return;
printf("convsing.........\n"
inlen = strlen(inbuf);
printf("cd is %d, inlen = %d\n", cd, inlen);
if((n = iconv(cd, (const char **)&pin, &inlen, &pout, &outlen)) == (ssize_t)(-
1)){
perror("iconv error\n"
return;
}
printf("Output: %s,n= %d,inlen=%d,outlen=%d\n", pout,n,inlen,outlen);
iconv_close(cd);
}
运行:
./conv 测试 GB2312 UTF-8
convsing.........
cd is 134864, inlen = 4
Output: ,n= 0,inlen=0,outlen=194
既然iconv()也没出错,而且inlen已经-为0,说明已经作过转换了,为什么n=0,pout没有内容输出呢? |
|