cocos2dx android乱码,cocos2dx番外篇——VS2010中的中文乱码问题

当你想使用中文时,你是否有这样的一个困惑。

把样例中的HelloWorld改成中文的 “你好,世界!”。

然后编译运行,发现居然是个乱码!!!

eef55c9975b9a191c888fb86f518d38c.png

因为cocos2dx中使用的是UTF-8字符集,而VS中确实ANSI。

所以我们需要对其进行字符集转换。

然后纵里寻它求百度,终于找到了解决方案。

一个函数搞定!

#include "cocos2d.h"

char* toUTF(const char* strGB2312)

{

int iLen = MultiByteToWideChar(CP_ACP, 0, strGB2312, -1, NULL, 0);

wchar_t* wstr = new wchar_t[iLen+1];

memset(wstr, 0, iLen+1);

MultiByteToWideChar(CP_ACP, 0, strGB2312, -1, wstr, iLen);

iLen = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);

char* strUTF8 = new char[iLen+1];

memset(strUTF8, 0, iLen+1);

WideCharToMultiByte(CP_UTF8, 0, wstr, -1, strUTF8, iLen, NULL, NULL);

if(wstr) delete[] wstr;

return strUTF8;

}

为了方便使用,你可以把上面的函数放到一个.h文件里面去,然后要使用的话,只要#include就可以了。

至于函数中一些变量:

MultiByteToWideChar , WideCharToMultiByte

CP_ACP , CP_UTF8

有兴趣的自行百度。不过不了解也没关系,反正只要会调用上面的函数就可以了。。。

8a7e60dccbbaa3e988db6f2b8f374cc8.png

。。。。。。。。。。。。。。。。

。。。。。。。。。。。。。。。。

。。。。。。。。。。。。。。。。

=========================================================================================

可是。。。当我正想把它移植到Android上的时候。。。

在eclipse里编辑的时候,各种报错啊。。。

7bdac0decdc9f9657a480198d035b9bf.png

c62cf2fb3a63629721dc85e99365b64a.png

主要的是由于 MultiByteToWideChar , memset ,等一些函数,需要引入相应的头文件的。。。

这里你看了 第2节的知识点应该可以解决吧。。。

引入C和C++以及C++ STL相关的头文件。。。

d1673d13afccd7846fcaa931698529e6.png

没有报错了。。。。

db32bec650873330e492dc36857cd003.png

但是。。。虽然你这些都做了,当你激动地点编译运行的时候。。。

3ffddda68e971287e40de4240b7ee468.png

fatal error: windows.h: No such file or directory ???

可是我已经引入了这个windows.h的头文件了的。。。

然后我去百度啊,谷歌啊。。。搞了一天。。。然后放弃了。。。完全迷茫。。。。

后来我索性去掉转码的流程,直接把Classes里所有的.h和.cpp文件全部放到文本编辑器(我用的是Notepad++),把文件全部搞错UTF8编码,-> 保存 -> 关闭。。。

然后完美的解决了。。。是的,应该是完美的解决了吧。。。???

好吧,暂时只能用这样的方法了。。。

乱码问题自古以来就是一大病痛啊。。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值