码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2015-11-13 13:20:35      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:

在写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);


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

标签:

原文地址:http://my.oschina.net/u/2276921/blog/529828

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!