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 utf8ToLocal(char *in_buff,size_t in_len,char *out_buff,size_t
out_len)
{
if((!in_buff) || (!out_buff) || (in_len<=0) || (out_len<=0))
{
return 0;
}
switch(GetLanguage())
{
case LAN_GB:
return
code_convert("utf-8","gb2312",in_buff,in_len,out_buff,out_len);
case LAN_BIG5:
return code_convert("utf-8","big5",in_buff,in_len,out_buff,out_len);
}
}