#include<iconv.h>
#include<stdio.h>
#include<string.h>
#define OUTLEN 1024
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(iconv(cd,pin,&inlen,pout,&outlen)==-1)
return -1;
iconv_close(cd);
return 0;
}
int u2g(char *inbuf,int inlen,char *outbuf,int outlen)
{
return code_convert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);
}
int g2u(char *inbuf,int inlen,char *outbuf,size_t outlen)
{
return code_convert("gb2312","utf-8",inbuf,inlen,outbuf,outlen);
}
int convert(char *in_gb2312)
{
char out[OUTLEN];
int rc = g2u(in_gb2312, strlen(in_gb2312), out, OUTLEN);
strcpy(in_gb2312,out);
// printf("%s\n", out);
}