文档章节

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

暖冰
 暖冰
发布于 2015/11/13 11:23
字数 248
阅读 560
收藏 1

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


© 著作权归作者所有

暖冰
粉丝 58
博文 124
码字总数 116908
作品 1
美国
程序员
私信 提问
Linux查看文件编码格式及文件编码转换

如果你需要在Linux 中操作windows下的文件 ,那么你可能会经常遇到文件 编码 转换的问题。Windows中默认的文件 格式是GBK(gb2312),而Linux 一般都是UTF-8。下面介绍一下,在Linux 中如何查看...

zhailibao
2013/05/15
3.4K
0
linux和windows双系统互拷文件乱码问题

如果你需要在linux下面用到windows下的文件,拷贝上去后经常发现中文显示乱码。。原因是Windows中默认的文件格式是 GBK(gb2312),而Linux一般都是UTF-8。比较繁琐的方法是在windows下用程序把...

wzqlcf
2014/07/10
271
0
Java应用通讯编码格式问题

现在是两个平台之间进行通讯,使用的是RPC协议,A平台所有的底层包使用的是GBK的编码格式,开发的应用也是使用的GBK编码;而B平台的底层全部是UTF-8,应用也是UTF-8。 两个平台之间通讯时双方...

彭小位
2016/10/09
174
3
Linux 和 Windows 平台不同的 UCS-2 编码

以下是有关两个平台 UCS-2 编码的潜规则: 1, UCS-2 不等于 UTF-16。 UTF-16 每个字节使用 ASCII 字符范围编码,而 UCS-2 对每个字节的编码可以超出 ASCII 字符范围。UCS-2 和 UTF-16 对每个...

澈明
2012/12/28
360
0
linux 下文件名/文件内容编码转换

1、Linux命令行下查看文件的编码 enca 文件名 file 文件名 2、linux文件名编码批量转换 convmv -f 源编码 -t 新编码 [选项] 文件名 常用参数: -r 递归处理子文件夹 -notest 真正进行操作,请...

大数据之路
2012/10/10
930
0

没有更多内容

加载失败,请刷新页面

加载更多

Java常见异常处理

异常是Java程序中经常遇到的问题,一个异常就是一个Bug,就要花很多时间来定位异常。 Java异常 (1)Throwable是Java异常的顶级类,所有的异常都继承于这个类。 (2)Error,Exception是异常...

daxiongdi
18分钟前
2
0
Validator 常用注解

说明 Validator主要是校验用户提交的数据的合理性的,比如是否为空了,密码长度是否大于6位,是否是纯数字的,等等。那么在spring boot怎么使用这么强大的校验框架呢。 常用 [@null](https:...

五彩的颜色
27分钟前
2
0
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。

#1 先把入栈顺序的第一数据入栈, #2 if 入栈的数据==等于出栈的数据,就循环一次看是否新建的栈的数据是否出栈 #3 返回新建的栈是否为空,就是要的结果 public class Solution { public boo...

winkwink
33分钟前
1
0
《JAVA核心知识》学习笔记 (19. 数据库)

19.1.1. 存储引擎 19.1.1.1. 概念 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、 更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧...

Shingfi
39分钟前
4
0
三分钟手操自己的yum源

本文章原创首发公众号:编程三分钟 上次就想手操yum源了,考虑到有的朋友没接触过,直接写成了yum源的科普,活活憋了我一个星期,现在我们快快开始。 什么情况下我们需要搭建一个仓库呢? 记...

编程三分钟
42分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部