对于socket中有中文的传输,在接收时我做一次g2u就OK了,你要不要试试
[code="c++"]
int code_convert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen)
{
iconv_t cd;
//int rc;
char **pin = &inbuf;
char **pout = &outbuf;cd = iconv_open(to_charset,from_charset);
if (cd==0)
return -1;
memset(outbuf,0,outlen);
if ((int)iconv(cd,pin,(size_t *)&inlen,pout,(size_t*)&outlen) == -1)
{
iconv_close(cd);
return -1;
}
iconv_close(cd);
return 0;
}
//utf8 --> gb2312
int u2g(char *inbuf,int inlen,char *outbuf,int outlen)
{
return code_convert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);
}
//gb2312 --> utf8
int g2u(char *inbuf,int inlen,char *outbuf,int outlen)
{
return code_convert("gb2312","utf-8",inbuf,inlen,outbuf,outlen);
}
void convertLLongToChar(long long n, char * ch)
{//Log->plog(1, "convertLLongToChar() \n");
char p[17];
int k = 0;
while(1)
{
p[k] = '0' + n%16;
if(n>=16)
{
n = n/16;
}
else {
break;
}
k++;
}
p[16] = '\0';
//Log->plog(1, "%s \n", p);
int i = 0;
int j = 15;
for(i =0 ;i<16;i++)
{
ch[j] = p[i];
j--;
}
ch[16] = '\0';
}
[/code]