日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

cocos2dx 3.0 windows平台 中文乱码解决

發布時間:2023/12/9 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cocos2dx 3.0 windows平台 中文乱码解决 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

From: http://www.cnblogs.com/yujiaao/p/3691938.html

?

因為linux下cocostudio wine安裝不上 而且又要開發windows程序 果斷舍棄了ubuntu而實用vs2013 去玩cocos2dx3.0

花了一天的時間才解決中文亂碼 淚奔ing 分享記錄下 下面是我嘗試的的過程:

1相關設置

??? 右鍵項目屬性——》配置屬性---》常規---選擇Unicode編碼

??? 發現仍然是亂碼

2 更換字體無效(我最開始一直以為這個問題 各種糾結)

3使用Userdefault存數據在取出

?? xml文件是utf8的 但是取出還是無效

4.嚴重懷疑編譯器雖然調整為Unicode 但是缺要轉為ansi編譯 而編譯過程中某些字符串可能不轉編碼導致亂碼。。。(對于vs不太了解)

瘋狂查看源碼和各種資料 ? 發現??項目名稱/cocos2d/extensions/proj.win32

里面有個win32inputbox的類(h和cpp)查看里面有轉碼方法(網上2.x給的資料是有個third_party里面有轉碼 但是沒找到)

在源碼中引入頭文件無效(原因是雖然文件存在 但是編譯器沒有把他識別為源碼)需要在解決工具面板? 右鍵添加現有項 添加頭文件和cpp文件沮洳工程即可

Win32InputBox.h Win32InputBox.cpp?兩個文件 要把 他們通過添加現有項的方式添加進來 然后看h的源碼 里面有靜態轉碼函數

然后使用

std::string CWin32InputBox::AnsiToUtf8(std::string strAnsi)?轉換一下即可(其實為什么要轉成utf8 我也不懂 我試著反著轉換發現不行)

有源碼就是好 找不到的東西最后到源碼包里面去翻 可以深入理解每一個細節。。。。

ps:我覺得那兩個靜態轉換的函數挺實用的 果斷記錄下來 以后在遇到編碼問題的時候備用

?

?

#include <windows.h> #include <tchar.h>std::string AnsiToUtf8(std::string strAnsi) {std::string ret;if (strAnsi.length() > 0){ int nWideStrLength = MultiByteToWideChar(CP_ACP, 0, strAnsi.c_str(), -1, NULL, 0);WCHAR* pwszBuf = (WCHAR*)malloc((nWideStrLength+1)*sizeof(WCHAR));memset(pwszBuf, 0, (nWideStrLength+1)*sizeof(WCHAR));MultiByteToWideChar(CP_ACP, 0, strAnsi.c_str(), -1, pwszBuf, (nWideStrLength+1)*sizeof(WCHAR));int nUtf8Length = WideCharToMultiByte( CP_UTF8,0,pwszBuf,-1,NULL,0,NULL,FALSE );char* pszUtf8Buf = (char*)malloc((nUtf8Length+1)*sizeof(char));memset(pszUtf8Buf, 0, (nUtf8Length+1)*sizeof(char));WideCharToMultiByte(CP_UTF8, 0, pwszBuf, -1, pszUtf8Buf, (nUtf8Length+1)*sizeof(char), NULL, FALSE);ret = pszUtf8Buf;free(pszUtf8Buf);free(pwszBuf);}return ret; }std::string Utf8ToAnsi(std::string strUTF8) {std::string ret;if (strUTF8.length() > 0){int nWideStrLength = MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, NULL, 0);WCHAR* pwszBuf = (WCHAR*)malloc((nWideStrLength+1)*sizeof(WCHAR));memset(pwszBuf, 0, (nWideStrLength+1)*sizeof(WCHAR));MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, pwszBuf, (nWideStrLength+1)*sizeof(WCHAR));int nAnsiStrLength = WideCharToMultiByte( CP_ACP,0,pwszBuf,-1,NULL,0,NULL,FALSE );char* pszAnsiBuf = (char*)malloc((nAnsiStrLength+1)*sizeof(char));memset(pszAnsiBuf, 0, (nAnsiStrLength+1)*sizeof(char));WideCharToMultiByte(CP_ACP, 0, pwszBuf, -1, pszAnsiBuf, (nAnsiStrLength+1)*sizeof(char), NULL, FALSE);ret = pszAnsiBuf;free(pszAnsiBuf);free(pwszBuf);}return ret; }


?

總結

以上是生活随笔為你收集整理的cocos2dx 3.0 windows平台 中文乱码解决的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。