您好,登錄后才能下訂單哦!
當你想使用中文時,你是否有這樣的一個困惑。
把樣例中的HelloWorld改成中文的 “你好,世界!”。
然后編譯運行,發現居然是個亂碼!!!
因為cocos2dx中使用的是UTF-8字符集,而VS中確實ANSI。
所以我們需要對其進行字符集轉換。
然后縱里尋它求百度,終于找到了解決方案。
一個函數搞定!
#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; }
為了方便使用,你可以把上面的函數放到一個.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編碼,-> 保存 -> 關閉。。。
然后完美的解決了。。。是的,應該是完美的解決了吧。。。???
好吧,暫時只能用這樣的方法了。。。
亂碼問題自古以來就是一大病痛啊。。。。。。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。