您的位置:首页 > 移动开发 > Cocos引擎

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

2014-12-12 15:14 495 查看
坑底的vs2012搞了一上午才发现乱码问题是怎么回事

在其他平台下文件编码一般都是utf-8,可是在vs2012上面使用的是gb2312,问题来了,你要是想输入中文就是乱码

解决办法很简单的

cocos2d-x内部是以utf8处理文本的,而VS直接输入时文本编码为GBK,如果添加L标志,则为Unicode编码。



解决这个问题有三种办法:

将源代码文件保存为utf8编码,不过由于编译器的问题,这种方式会导致很多无法预测的问题

将字符串用utf8编码集中存到一文件中,然后用代码读取这些字符串来使用,这种办法还能很好的支持多语言版本

使用字符串时,先将其转换为utf8编码
我最终使用了第三种方法,第一种撇开不说,第二种实现起来比较麻烦,第三种则要方便很多。

//加这个函数,G2U,我自己写的函数名。

glview=GLView::create(G2U(飞机大战));



//然后把这个函数加上

char* AppDelegate::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* G2U(const char* gb2312) ;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: