cocos2d中文顯示問題的解決方法

在cocos2d中如果輸入中文,在場景中會顯示出亂碼,這是因爲編碼方式的問題,解決這個問題的放大也不是很難,而且代碼能反覆使用比較簡單,易於操作

這篇博客只能算是部分原創,因爲這裏我借鑑了 原始出處 我借鑑了一些代碼,希望大家轉載時也能尊重原創,在這裏我說明的會更加詳細一些,對於新手或是不是很熟練的人來說還是很有幫助的,高手忽略我...


第一步:

我們需要新建一個cpp文件和一個.h文件,起名字叫做Tools,這個裏邊放的就是我們轉碼需要的工具代碼

(1) Tools.h

    #ifndef _TOOLS_H_  
    #define  _TOOLS_H_  
      
    //中文轉碼  
      
    #include "cocos2d.h"  
      
    #pragma comment(lib, "libiconv.lib")  
      
    int GBKToUTF8(std::string & gbkStr, const char* toCode, const char* fromCode);  
      
    #endif  

(2) Tools.cpp

    #include "Tools.h"  
    #include "iconv\iconv.h"  
      
    int GBKToUTF8(std::string & gbkStr, const char* toCode, const char* fromCode)  
    {  
        iconv_t iconvH;  
        iconvH = iconv_open(fromCode, toCode);  
      
        if (iconvH == 0)  
      
        {  
            return -1;  
        }  
      
        const char* strChar = gbkStr.c_str();  
        const char** pin = &strChar;  
        size_t strLength = gbkStr.length();  
        char* outbuf = (char*) malloc(strLength*4);  
        char* pBuff = outbuf;  
      
        memset( outbuf, 0, strLength*4);  
        size_t outLength = strLength*4;  
      
        if (-1 == iconv(iconvH, pin, &strLength, &outbuf, &outLength))  
        {  
            iconv_close(iconvH);  
            return -1;  
        }  
      
        gbkStr = pBuff;  
        iconv_close(iconvH);  
      
        return 0;  
    }  

(以下是我的純原創)要注意的是,很多人icov.h這個文件的目錄沒有在指定目錄下,這會導致報錯,我們有兩種解決方式。一種是像代碼中寫的一樣,把iconv.h文件放入到指定的文件目錄下,這樣就可以直接使用了;第二種就是在你創建的這個項目中CTRL+F搜索iconv.h這個文件,把這個相對路徑放置到include後邊,舉例:

#include "win32-specific\icon\include\iconv.h"  

這個是我當時跑的時候的目錄,讀者可以根據自己的情況進行更改


好了,新建完這兩個文件之後我們要在調用的界面上進行相應的修改了,注意要調用這幾個頭文件

#include "Tools.h"  
#include "win32-specific\icon\include\iconv.h"  

接下來就是我們自己想要的中文文字了,我舉個栗子:

std::string a = "天鵝";
	GBKToUTF8(a, "gbk", "utf-8");
	Label* label = Label::create(a.c_str(), "Marker Felt", 100);
	label->setPosition(ccp(450, 450));
	this->addChild(label);

在這一部分就會出現天鵝的中文字樣,不再是亂碼
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章