//随便在cpp中写下列函数,不用再.h文件声明
//在cpp中调用
BOOL WCharToMByte(LPCWSTR lpcwszStr, LPSTR lpszStr, DWORD dwSize)
{
DWORD dwMinSize;
dwMinSize = WideCharToMultiByte(CP_UTF8,NULL,lpcwszStr,-1,NULL,0,NULL,FALSE);
if(dwSize < dwMinSize)
{
return false;
}
WideCharToMultiByte(CP_UTF8,NULL,lpcwszStr,-1,lpszStr,dwSize,NULL,FALSE);
return true;
}
//在cpp中调用
wchar_t str[100] = {L"小朋友,试一试根据黑色的轮廓把小动物们拖进去吧!"};
char strs[200] = {0};
WCharToMByte(str,strs,sizeof(str)/sizeof(strs[0]));
pLabel = CCLabelTTF::create(strs, "CourierNewPS-ItalicMT", 30);
pLabel->setColor(ccc3(0,0,0));
pLabel->setPosition(ccp(512,700));
this->addChild(pLabel,1);
//另外一个方法,无意从某人的博客看到,借鉴下
声明:
//转换中文
char* G2U( const char* gb2312 )
{
int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);
wchar_t* wstr = new wchar_t[len+1];
memset(wstr, 0, len+1);
MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);
len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);
char* str = new char[len+1];
memset(str, 0, len+1);
WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);
if(wstr) delete[] wstr;
return str;
}
//调用
char* ch1 = G2U("请输入账号");
CCLabelTTF* test= CCLabelTTF::create(ch1, "Arial", 24);
test->setPosition(ccp(100,100));
this->addChild(test);
CC_SAFE_DELETE(ch1);
用cocos2d-x自带的iconv库来转码,来实现中文显示,具体参考:
http://momowing.diandian.com/post/2013-01-16/40047183777
编译到android版本上,可以查看我的一篇博客: