linux C gbk utf-8编码转换

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:21   2902   0

最近从新浪开放IP接口上读取IP的归属地信息,结果发现读取过来的IP归属地信息是gbk编码,而数据库则是utf8编码,如果直接把gbk编码的信息写入到数据库,则出现乱码,所以必须在持续里把数据进行utf8编码转换,经网络搜索,找到如下方法


#include <iconv.h>  
  
int code_convert(char *from_charset,char *to_charset,char *inbuf,size_t inlen,char *outbuf,size_t 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,size_t outlen)  
{  
        return code_convert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);  
}  
  
int g2u(char *inbuf,size_t inlen,char *outbuf,size_t outlen)  
{  
        return code_convert("gb2312","utf-8",inbuf,inlen,outbuf,outlen);  
}  


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP