在 cocos2d-x 3.0 中中文显示为乱码的问题

开发环境:Windows 8   VS2012  cocos2d-x 3.0 beta cocostudio 1.2

当通过 cocostudio UI编辑 编辑了一个界面,如下所示



当加载到 cocos2d-x代码中,但是在设置按钮文字时会出现乱码。



本人是通过如下方法转换编码:

以下代码来源于【tkokof1博客】 http://blog.csdn.net/tkokof1/article/details/7426706

  1. //! convert from wstring to UTF8 using self-coding-converting  
  2. void WStrToUTF8(std::string& dest, const std::wstring& src){  
  3.     dest.clear();  
  4.   
  5.     for (size_t i = 0; i < src.size(); i++){  
  6.         wchar_t w = src[i];  
  7.         if (w <= 0x7f)  
  8.             dest.push_back((char)w);  
  9.         else if (w <= 0x7ff)  
  10.         {  
  11.             dest.push_back(0xc0 | ((w >> 6)& 0x1f));  
  12.             dest.push_back(0x80| (w & 0x3f));  
  13.         }  
  14.         else if (w <= 0xffff)  
  15.         {  
  16.             dest.push_back(0xe0 | ((w >> 12)& 0x0f));  
  17.             dest.push_back(0x80| ((w >> 6) & 0x3f));  
  18.             dest.push_back(0x80| (w & 0x3f));  
  19.         }  
  20.         else if (sizeof(wchar_t) > 2 && w <= 0x10ffff)  
  21.         {  
  22.             dest.push_back(0xf0 | ((w >> 18)& 0x07)); // wchar_t 4-bytes situation  
  23.             dest.push_back(0x80| ((w >> 12) & 0x3f));  
  24.             dest.push_back(0x80| ((w >> 6) & 0x3f));  
  25.             dest.push_back(0x80| (w & 0x3f));  
  26.         }  
  27.         else  
  28.             dest.push_back('?');  
  29.     }  
  30. }  
  31.   
  32. //! simple warpper  
  33. std::string WStrToUTF8(const std::wstring& str)  
  34. {  
  35.     std::string result;  
  36.     WStrToUTF8(result, str);  
  37.     return result;  
  38. }  

在代码中使用方式如下:

  1. Button* button = dynamic_cast<Button*>(m_layout->getChildByTag(UI_BUTTON_START));  
  2. button->setTitleText(WStrToUTF8(L"运行"));  



就可以正确显示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值