您好,登錄后才能下訂單哦!
當(dāng)你想使用中文時(shí),你是否有這樣的一個(gè)困惑。
把樣例中的HelloWorld改成中文的 “你好,世界!”。
然后編譯運(yùn)行,發(fā)現(xiàn)居然是個(gè)亂碼?。?!
因?yàn)閏ocos2dx中使用的是UTF-8字符集,而VS中確實(shí)ANSI。
所以我們需要對其進(jìn)行字符集轉(zhuǎn)換。
然后縱里尋它求百度,終于找到了解決方案。
一個(gè)函數(shù)搞定!
#include "cocos2d.h" char* toUTF(const char* strGB2312) { int iLen = MultiByteToWideChar(CP_ACP, 0, strGB2312, -1, NULL, 0); wchar_t* wstr = new wchar_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 = new char[iLen+1]; memset(strUTF8, 0, iLen+1); WideCharToMultiByte(CP_UTF8, 0, wstr, -1, strUTF8, iLen, NULL, NULL); if(wstr) delete[] wstr; return strUTF8; }
為了方便使用,你可以把上面的函數(shù)放到一個(gè).h文件里面去,然后要使用的話,只要#include就可以了。
至于函數(shù)中一些變量:
MultiByteToWideChar , WideCharToMultiByte
CP_ACP , CP_UTF8
有興趣的自行百度。不過不了解也沒關(guān)系,反正只要會(huì)調(diào)用上面的函數(shù)就可以了。。。
。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。
=========================================================================================
可是。。。當(dāng)我正想把它移植到Android上的時(shí)候。。。
在eclipse里編輯的時(shí)候,各種報(bào)錯(cuò)啊。。。
主要的是由于 MultiByteToWideChar , memset ,等一些函數(shù),需要引入相應(yīng)的頭文件的。。。
這里你看了 第2節(jié)的知識點(diǎn)應(yīng)該可以解決吧。。。
引入C和C++以及C++ STL相關(guān)的頭文件。。。
沒有報(bào)錯(cuò)了。。。。
但是。。。雖然你這些都做了,當(dāng)你激動(dòng)地點(diǎn)編譯運(yùn)行的時(shí)候。。。
fatal error: windows.h: No such file or directory ???
可是我已經(jīng)引入了這個(gè)windows.h的頭文件了的。。。
然后我去百度啊,谷歌啊。。。搞了一天。。。然后放棄了。。。完全迷茫。。。。
后來我索性去掉轉(zhuǎn)碼的流程,直接把Classes里所有的.h和.cpp文件全部放到文本編輯器(我用的是Notepad++),把文件全部搞錯(cuò)UTF8編碼,-> 保存 -> 關(guān)閉。。。
然后完美的解決了。。。是的,應(yīng)該是完美的解決了吧。。。???
好吧,暫時(shí)只能用這樣的方法了。。。
亂碼問題自古以來就是一大病痛啊。。。。。。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。