cocos2d-x 3.2 在window平台vs2012下解决中文乱码问题

来源:互联网 发布:redis库数据查询 编辑:程序博客网 时间:2024/06/04 07:41
  1. void WStrToUTF8(std::string& dest, const std::wstring& src){  
  2.     dest.clear();  
  3.   
  4.     for (size_t i = 0; i < src.size(); i++){  
  5.         wchar_t w = src[i];  
  6.         if (w <= 0x7f)  
  7.             dest.push_back((char)w);  
  8.         else if (w <= 0x7ff)  
  9.         {  
  10.             dest.push_back(0xc0 | ((w >> 6)& 0x1f));  
  11.             dest.push_back(0x80| (w & 0x3f));  
  12.         }  
  13.         else if (w <= 0xffff)  
  14.         {  
  15.             dest.push_back(0xe0 | ((w >> 12)& 0x0f));  
  16.             dest.push_back(0x80| ((w >> 6) & 0x3f));  
  17.             dest.push_back(0x80| (w & 0x3f));  
  18.         }  
  19.         else if (sizeof(wchar_t) > 2 && w <= 0x10ffff)  
  20.         {  
  21.             dest.push_back(0xf0 | ((w >> 18)& 0x07)); // wchar_t 4-bytes situation  
  22.             dest.push_back(0x80| ((w >> 12) & 0x3f));  
  23.             dest.push_back(0x80| ((w >> 6) & 0x3f));  
  24.             dest.push_back(0x80| (w & 0x3f));  
  25.         }  
  26.         else  
  27.             dest.push_back('?');  
  28.     }  
  29. }  
  30.   
  31. //! simple warpper  
  32. std::string WStrToUTF8(const std::wstring& str)  
  33. {  
  34.     std::string result;  
  35.     WStrToUTF8(result, str);  
  36.     return result;  
  37. }  
  38. 注意之前要添加类名哟。其他就跟源码是一样的了,希望对大家有所帮助,因为笔者当时就纠结于此。。。。。。
0 0
原创粉丝点击