- 论坛徽章:
- 1
|
我的前台传上来xml是gb2312,我用的是libxml,因为中文的原因,我后台把他转换成了utf8,然后中文就看不到了,我插入数据库informix也是乱码,所以我从doc里取字符串之后,还是把它转换成了gb2312.
这时就有问题了,有些字符串没有中文的时候就乱掉了,比如 Flag这个上传的变量,实际就是一个'0',但经过转换之后 ‘0‘后面多了几个乱字符。
我的操作系统是sco openserver
int code_convert(char* from_charset, char* to_charset, char* inbuf,
int inlen, char* outbuf, int outlen)
{
iconv_t cd;
char** pin = &inbuf;
char** pout = &outbuf;
cd = iconv_open(to_charset,from_charset);
if(cd == 0)
return -1;
memset(outbuf,0,outlen);
if(iconv(cd,(const char**)pin,(unsigned int *)&inlen,pout,(unsigned int*)&outlen)== -1)
return -1;
iconv_close(cd);
return 0;
}
int u2g(char *inbuf,char *outbuf)
{
int nOutLen = 2 * strlen(inbuf) - 1;
char* szOut = (char*)malloc(nOutLen);
if (-1 == code_convert("utf-8","gb2312",inbuf,strlen(inbuf),szOut,nOutLen))
{
free(szOut);
return -1;
}
strcpy(outbuf,szOut);
free(szOut);
return 0;
}
//GB2312码转为UNICODE码
int g2u(char *inbuf,char *outbuf)
{
int nOutLen = 2 * strlen(inbuf) - 1;
char* szOut = (char*)malloc(nOutLen);
if (-1 == code_convert1("gb2312","utf-8",inbuf,strlen(inbuf),szOut,nOutLen))
{
free(szOut);
szOut = NULL;
return -1;
}
strcpy(outbuf,szOut);
free(szOut);
return 0;
}
[ 本帖最后由 lyl2002 于 2009-7-22 09:31 编辑 ] |
|