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

    解决问题有三种办法:

将源码文件保存为utf8编码,只是因为编译器的问题,这样的方式会导致非常多无法预測的问题

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

使用字符串时。先将其转换为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)

     

文章链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。