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

时间: 2024-10-02 10:10:29

Linux平台下 GBK编码转UTF-8编码的相关文章

Linux平台下Java_Android开发环境的搭建

Linux 平台下安装JDK .Eclipse .Android SDK 说明 开发工具需自行去下载,此处就不再累述 该教程安装环境为 Ubuntu 14.04 x64 其他Linux操作方式基本相同 设计文件修改部分,请先备份要修改的文件,避免操作失误导致不能还原 Liunx 平台下区分大小写,输入文件名或路径建议复制避免不必要的错误 部分操作涉及root权限,为了避免麻烦 请直接使用 root权限操作 开启root权限: 1. sudo su root 2. 后面的提示中输入用户密码 安装

在linux平台下,设置core dump文件属性(位置,大小,文件名等)

在linux平台下,设置core dump文件生成的方法: 1) 在终端中输入ulimit -c 如果结果为0,说明当程序崩溃时,系统并不能生成core dump. 2) 使用ulimit -c unlimited命令,开启core dump功能,并且不限制生成core dump文件的大小.如果需要限制,加数字限制即可.ulimit - c 1024 3) 默认情况下,core dump生成的文件名为core,而且就在程序当前目录下.新的core会覆盖已存在的core.通过修改/proc/sys

Linux平台下:块设备、裸设备、ASMlib、Udev相关关系

对磁盘设备(裸分区)的访问方式分为两种:1.字符方式访问(裸设备):2.块方式访问 Solaris平台 : 在Solaris平台下,系统同时提供对磁盘设备的字符.块方式访问.每个磁盘有两个设备文件名: 一个在/dev/dsk目录下,比如/dev/dsk/c1t1d1s1,当以这个设备名操作时,就是以块的方式操作磁盘: 一个在/dev/rdsk目录下,比如/dev/rdsk/c1t1d1s1,当以这个设备名操作时,就是以字符方式(裸设备方式r)操作磁盘 Linux平台 : 在linux平台下,缺省

关于Linux平台下的ZFS文件系统最新情况

Linux平台下的ZFS文件系统分类两个,一个是在用户空间实现的ZFS,一个是通过内核模块实现的ZFS. 用户空间实现的ZFS已经好几年没人维护了,且不说稳定性,单是性能就无法用,相关开发人员已放弃. 内核空间实现的ZFS一直在维护,美国有相关机构在内部使用,按照zfsonlinux上的开发者所说,早已经稳定了,可以在线上使用,但国内使用的人还是寥寥.可能最大的问题就是,由于Solaris自身发布协议和专利纠纷的限制,此项目的代码仍是基于CDDL发布的,因而不会进入主线内核,所以大家普遍感觉不是

Linux平台下Python的安装及IDE开发环境搭建

Linux平台下Python的安装及IDE开发环境搭建 1.Python安装 Python有2.X和3.X两个版本,由于2.X的版本较稳定,使用者也较多,本文选择使用Python 2.X版本. 安装步骤: (1) 下载Python安装包:https://www.python.org/downloads/ (2)  解压安装包:tar zxvf Python-2.7.10.tgz (3)  编译:./compile (4)  安装:make && make install 说明: ① 这样p

linux平台下Oracle database的安装与/etc/redhat-release

linux平台下,在安装oracle10.2.0.1的时候,不要修改/etc/redhat-release的内容. 而是要用runInstaller的一个参数去解决:-ignoreSysPreReqs.因为emc的多路径软件在安装时会读取该文件的内容,错误的内容会导致emc多路径软件安装失败.这也算是一个最佳实践吧. 版权声明:本文为博主原创文章,未经博主允许不得转载.

linux平台下Hadoop下载、安装、配置

在这里我使用的linux版本是CentOS 6.4 CentOS-6.4-i386-bin-DVD1.iso 下载地址: http://mirrors.aliyun.com/centos/6.8/isos/i386/ 0.使用host-only方式 将Windows上的虚拟网卡改成跟linux上的网卡在同一个网段上 注意:一定要将windowsh 的WMnet1的ip设置和你的虚拟机在同一网段,但是ip不一样 一.前期工作: 1.修改linux ip 手动修改 也可以命令修改 vim /etc/

Linux平台下Java调用C函数

JNI是Java native interface的简写,可以译作Java原生接口.Java可以通过JNI调用C/C++的库,这对于那些对性能要求比较高的Java程序无疑是一个 福音. 使用JNI也是有代价.大家都知道JAVA程序是运行在JVM之上的,可以做到平台无关.但是如果Java程序通过JNI调用了原生的代码(比如 c/c++等),则Java程序就丧失了平台无关性.最起码需要重新编译原生代码部分.所以应用JNI需要好好权衡,不到万不得已,请不要选择JNI,可 以选择替代方案,比如TCP/I

linux平台下server运维问题分析与定位

结合我工作中碰到的运维问题,总结一下Linux下server常见的运维问题以及定位方式.这里的server主要指自主开发的逻辑server,web srv因为通常采用通用的架构所以问题比较少. 逻辑server通常的处理能力在3k/s - 1w/s之间,因业务特点而不同.逻辑server一般是自主开发的,虽然在上线前大都经过功能和压力测试,但放到现网环境上部署后还是难免会出现一些问题,有些问题是在灰度发布时就可以发现,而有些问题则是一个漫长的暴露过程.下面先总结一下大致的问题分类和定位方法.