UTF 转换函数 iconv

0 views
Skip to first unread message

胡杰婷

unread,
Mar 15, 2007, 5:54:42 AM3/15/07
to sky-tone
#include <iconv.h>
#define LAN_GB 1
#define LAN_BIG5 2
#define LAN_EN 3

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);
}

}

Reply all
Reply to author
Forward
0 new messages