坑底的vs2012搞了一上午才发现乱码问题是怎么回事
在其他平台下文件编码一般都是utf-8,可是在vs2012上面使用的是gb2312,问题来了,你要是想输入中文就是乱码
解决办法很简单的
cocos2d-x内部是以utf8处理文本的,而VS直接输入时文本编码为GBK,如果添加L标志,则为Unicode编码。
解决这个问题有三种办法:
-
使用字符串时,先将其转换为utf8编码
我最终使用了第三种方法,第一种撇开不说,第二种实现起来比较麻烦,第三种则要方便很多。
//加这个函数,G2U,我自己写的函数名。
glview=GLView::create(G2U(飞机大战));char* AppDelegate::G2U(const char* gb2312)
{
int len = MultiBytetoWideChar(CP_ACP,gb2312,-1,NULL,0);
wchar_t* wstr = new wchar_t[len+1];
memset(wstr,len+1);
MultiBytetoWideChar(CP_ACP,wstr,len);
len = WideCharToMultiByte(CP_UTF8,NULL);
char* str = new char[len+1];
memset(str,len+1);
WideCharToMultiByte(CP_UTF8,str,len,NULL);
if(wstr) delete[] wstr;
return str;
}char* G2U(const char* gb2312) ;