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

   做个打飞机的游戏,由于版本号太新,网上基本没有教教程,我的版本号是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) ; 

本人cocos2dx 2.x和3.x的源代码淘宝地址(欢迎大家光顾):https://shop141567464.taobao.com/?

spm=a313o.7775905.1998679131.d0011.aYDdAj

不懂的能够加我的QQ群: 239982941(一起学习cocos2dx

     

posted @ 2016-03-15 21:57  mengfanrong  阅读(503)  评论(0编辑  收藏  举报