Linux平台下 GBK编码转UTF-8编码

在写cocos的时候需要解析一个文件,但是文件是GBK编码方式,而cocos默认是使用UTF-8所以需要转码,这是在网上找到的代码,但是原本的不能用,这我修改过的。

系统环境:MacMini

编译器:Xcode

游戏引擎:cocos2d-x

头文件:#include <iconv.h>

int Rf4FileDecode::code_convert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen)
{
    iconv_t cd;
    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,(size_t*)&inlen,pout,(size_t*)&outlen) == -1)
        return -1;
    iconv_close(cd);
    return 0;
}

int Rf4FileDecode::u2g(char *inbuf,int inlen,char *outbuf,int outlen)
{
    return code_convert((char*)"utf-8",(char*)"gb2312",inbuf,inlen,outbuf,outlen);
}

int Rf4FileDecode::g2u(char *inbuf,size_t inlen,char *outbuf,size_t outlen)
{
    return code_convert((char*)"gb2312",(char*)"utf-8",inbuf,(int)inlen,outbuf,(int)outlen);
}

调用的时候 原编码字符串最好跟新编码字符串区分开为两个而不是转码后直接保存到原来的缓冲区。

调用代码:

    char b[1024];

    this->g2u(buff,1024,b,1024);


转载于:https://my.oschina.net/u/2276921/blog/529828

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值