溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

cocos2dx番外篇——VS2010中的中文亂碼問題

發(fā)布時(shí)間:2020-08-13 22:31:32 來源:網(wǎng)絡(luò) 閱讀:2844 作者:shahdza 欄目:開發(fā)技術(shù)

當(dāng)你想使用中文時(shí),你是否有這樣的一個(gè)困惑。

把樣例中的HelloWorld改成中文的 “你好,世界!”。

然后編譯運(yùn)行,發(fā)現(xiàn)居然是個(gè)亂碼?。?!

cocos2dx番外篇——VS2010中的中文亂碼問題


因?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ù)就可以了。。。


cocos2dx番外篇——VS2010中的中文亂碼問題

。。。。。。。。。。。。。。。。

。。。。。。。。。。。。。。。。

。。。。。。。。。。。。。。。。


=========================================================================================



可是。。。當(dāng)我正想把它移植到Android上的時(shí)候。。。

在eclipse里編輯的時(shí)候,各種報(bào)錯(cuò)啊。。。

cocos2dx番外篇——VS2010中的中文亂碼問題


cocos2dx番外篇——VS2010中的中文亂碼問題


主要的是由于 MultiByteToWideChar , memset ,等一些函數(shù),需要引入相應(yīng)的頭文件的。。。

這里你看了 第2節(jié)的知識點(diǎn)應(yīng)該可以解決吧。。。

引入C和C++以及C++ STL相關(guān)的頭文件。。。

cocos2dx番外篇——VS2010中的中文亂碼問題


沒有報(bào)錯(cuò)了。。。。

cocos2dx番外篇——VS2010中的中文亂碼問題


但是。。。雖然你這些都做了,當(dāng)你激動(dòng)地點(diǎn)編譯運(yùn)行的時(shí)候。。。

cocos2dx番外篇——VS2010中的中文亂碼問題


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í)只能用這樣的方法了。。。

亂碼問題自古以來就是一大病痛啊。。。。。。


向AI問一下細(xì)節(jié)

免責(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)容。

AI