- void WStrToUTF8(std::string& dest, const std::wstring& src){
- dest.clear();
- for (size_t i = 0; i < src.size(); i++){
- wchar_t w = src[i];
- if (w <= 0x7f)
- dest.push_back((char)w);
- else if (w <= 0x7ff)
- {
- dest.push_back(0xc0 | ((w >> 6)& 0x1f));
- dest.push_back(0x80| (w & 0x3f));
- }
- else if (w <= 0xffff)
- {
- dest.push_back(0xe0 | ((w >> 12)& 0x0f));
- dest.push_back(0x80| ((w >> 6) & 0x3f));
- dest.push_back(0x80| (w & 0x3f));
- }
- else if (sizeof(wchar_t) > 2 && w <= 0x10ffff)
- {
- dest.push_back(0xf0 | ((w >> 18)& 0x07)); // wchar_t 4-bytes situation
- dest.push_back(0x80| ((w >> 12) & 0x3f));
- dest.push_back(0x80| ((w >> 6) & 0x3f));
- dest.push_back(0x80| (w & 0x3f));
- }
- else
- dest.push_back('?');
- }
- }
- //! simple warpper
- std::string WStrToUTF8(const std::wstring& str)
- {
- std::string result;
- WStrToUTF8(result, str);
- return result;
- }
- 注意之前要添加类名哟。其他就跟源码是一样的了,希望对大家有所帮助,因为笔者当时就纠结于此。。。。。。
cocos2d-x 3.2 在window平台vs2012下解决中文乱码问题
最新推荐文章于 2020-12-10 08:56:07 发布