本文共 1279 字,大约阅读时间需要 4 分钟。
中文显示问题方法二(通过转码来使中文显示)
------------------------------------------相关代码--------------------------------------
(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;}
(3)调用界面(含要包含的头文件)
#include "iconv\iconv.h"#include "Tools.h"//通过转码显示中文std::string china="用户名:";GBKToUTF8(china,"gbk","utf-8");CCLabelTTF* pLabel2 = CCLabelTTF::create(china.c_str(), "Marker Felt", 24);pLabel2->setPosition(ccp(300, 500));this->addChild(pLabel2, 2);
----------------------相关代码-------------------------------