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);

在这一部分就会出现天鹅的中文字样,不再是乱码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值