解决cocos2dx在VS2012中文版环境下不支持中文的问题

  首先要明确的一点是:cocos2dx是支持中文的。因为其编码格式为UTF-8(无签名)——这只是我在网上找到的结论,并非从官方获取,因此不能十分确定,不过应该无误。

  那么,为什么在VS2012环境下,cocos2dx不能正确显示中文呢?

  这是因为二者编码格式不一致。VS2012中文版的默认编码格式为GB2312-80(我不确定英文版的格式如何,总之应该不是UTF-8)。在GB2312-80编码格式中,一个中文占2个字节,而在UTF-8格式中,一个中文占3个字节。这就势必会出现乱码。

  找到了原因,办法就很清楚了。目前我找到两个比较简单的办法:1.更改源文件的编码格式;2.令cocos2d-x程序从UTF-8(无签名)格式的文本中读取中文字符。具体方法如下:

1.更改源文件的编码格式

  VS2012中文版提供了直接修改源文件默认编码格式的方法,选择:文件->高级保存选项,然后在里面选择编码为Unicode(UTF-8 无签名)。之后,该源文件就是UTF-8格式的编码了,自然能够使cocos2d-x正确解析。且实验证明,使用cocos run -p android在安卓机上运行,也能够正确显示中文。

2.从文件中读取中文字符

  网上查阅资料,大多推荐这种方法。可以使用FileUtils的单例对象读取文本文件、列表文件。其getValueVectorFromFile、getValueMapFromFile、getStringFromFile等方法可以方便的提取出文本内容。只需要将欲读取的文件的编码格式设置为UTF-8(无签名)就可以正确获取中文了。

TIPS:如何从一个中文字符串中获取单个中文字符?

  如同遍历普通字符串一样,有时候也会需要遍历中文字符串。这时候就不能用普通的遍历方法了,这是因为一个中文占据了三个字节,读取时候应该准备四个字节来存放它,最后一个字节为'\0',如此方能正确读到一个中文字符。代码如下:

//buf读到的是你
char buf[4] = {0};
memcpy(buf, "你好", 3);
log ("one chinese char: %s", buf);

  log将输出:你

posted @ 2015-06-13 22:13  Demon90s  阅读(585)  评论(0编辑  收藏  举报