热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Cocos2dx3.1.1学习日志4cocos2dx解决中文乱码问题的几种办法

做个打飞机的游戏,由于版本太新,网上基本没有教教程,我的版本是cocos2d-x3.1.1的,今天遇到cocos2dx中中文乱码的问题。无奈只好Google百度寻求答案,明白了这个

   做个打飞机的游戏,由于版本太新,网上基本没有教教程,我的版本是cocos2d-x 3.1.1的,今天遇到cocos2dx中中文乱码的问题。无奈只好Google百度寻求答案,明白了这个问题的缘由。因为cocos2d-x内部是以utf8处理文本的,而VS直接输入时文本编码为GBK,如果添加L标志,则为Unicode编码。

    解决这个问题有三种办法:

  1. 将源代码文件保存为utf8编码,不过由于编译器的问题,这种方式会导致很多无法预测的问题

  2. 将字符串用utf8编码集中存到一文件中,然后用代码读取这些字符串来使用,这种办法还能很好的支持多语言版本

  3. 使用字符串时,先将其转换为utf8编码

我最终使用了第三种方法,第一种撇开不说,第二种实现起来比较麻烦,第三种则要方便很多。

   //加这个函数,G2U,我自己写的函数名。
glview=GLView::create(G2U("飞机大战"));


//然后把这个函数加上

char* AppDelegate::G2U(const char* gb2312)  
{  
int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);  
wchar_t* wstr = new wchar_t[len+1];  
memset(wstr, 0, len+1);  
MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);  
len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);  
char* str = new char[len+1];  
memset(str, 0, len+1);  
WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);  
if(wstr) delete[] wstr;  
return str;  
}
    

//然后在头文件里面加上函数声明就可以了

char*  G2U(const char* gb2312) ; 


不懂的可以加我的QQ群: 239982941(一起学习cocos2dx)

     

Cocos2d-x 3.1.1 学习日志4--cocos2d-x解决中文乱码问题的几种办法,,

Cocos2d-x 3.1.1 学习日志4--cocos2d-x解决中文乱码问题的几种办法


推荐阅读
author-avatar
saanenkim
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有