cocos2dx番外篇——VS2010中的中文乱码问题
当你想使用中文时,你是否有这样的一个困惑。
把样例中的HelloWorld改成中文的 “你好,世界!”。
然后编译运行,发现居然是个乱码!!!
因为cocos2dx中使用的是UTF-8字符集,而VS中确实ANSI。
所以我们需要对其进行字符集转换。
然后纵里寻它求百度,终于找到了解决方案。
一个函数搞定!
#include"cocos2d.h"char*toUTF(constchar*strGB2312){intiLen=MultiByteToWideChar(CP_ACP,0,strGB2312,-1,NULL,0);wchar_t*wstr=newwchar_t[iLen+1];memset(wstr,0,iLen+1);MultiByteToWideChar(CP_ACP,0,strGB2312,-1,wstr,iLen);iLen=WideCharToMultiByte(CP_UTF8,0,wstr,-1,NULL,0,NULL,NULL);char*strUTF8=newchar[iLen+1];memset(strUTF8,0,iLen+1);WideCharToMultiByte(CP_UTF8,0,wstr,-1,strUTF8,iLen,NULL,NULL);if(wstr)delete[]wstr;returnstrUTF8;}
为了方便使用,你可以把上面的函数放到一个.h文件里面去,然后要使用的话,只要#include就可以了。
至于函数中一些变量:
MultiByteToWideChar , WideCharToMultiByte
CP_ACP , CP_UTF8
有兴趣的自行百度。不过不了解也没关系,反正只要会调用上面的函数就可以了。。。
。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。
=========================================================================================
可是。。。当我正想把它移植到Android上的时候。。。
在eclipse里编辑的时候,各种报错啊。。。
主要的是由于 MultiByteToWideChar , memset ,等一些函数,需要引入相应的头文件的。。。
这里你看了 第2节的知识点应该可以解决吧。。。
引入C和C++以及C++ STL相关的头文件。。。
没有报错了。。。。
但是。。。虽然你这些都做了,当你激动地点编译运行的时候。。。
fatal error: windows.h: No such file or directory ???
可是我已经引入了这个windows.h的头文件了的。。。
然后我去百度啊,谷歌啊。。。搞了一天。。。然后放弃了。。。完全迷茫。。。。
后来我索性去掉转码的流程,直接把Classes里所有的.h和.cpp文件全部放到文本编辑器(我用的是Notepad++),把文件全部搞错UTF8编码,-> 保存 -> 关闭。。。
然后完美的解决了。。。是的,应该是完美的解决了吧。。。???
好吧,暂时只能用这样的方法了。。。
乱码问题自古以来就是一大病痛啊。。。。。。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。