- 论坛徽章:
- 0
|
我也遇到了楼主的问题,确实是长度类型问题,把int转成size_t传入iconv函数时导致长度不对,应该加个临时变量存储。
int CodeConvert(char *psFromCharset,char *psToCharset,char *psInputBuf,int iInputLen,char*psOutputBuf,int iOutputlen)
{
iconv_t iConvHandle;
char **pInput = &psInputBuf;
char **pOutput = &psOutputBuf;
size_t inLen = iInputLen;
size_t outLen = iOutputlen;
iConvHandle = iconv_open(psToCharset,psFromCharset);
if (iConvHandle == 0)
{
fprintf(stderr, "iconv_open Error[%s]!",strerror(errno));
return -1;
}
if (iconv(iConvHandle,pInput,&inLen,pOutput,&outLen) == -1)
{
fprintf(stderr, "iconv Error[%s]!",strerror(errno));
iconv_close(iConvHandle);
return -1;
}
iconv_close(iConvHandle);
return 0;
} |
|