码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-06-13 22:52:16      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

  首先要明确的一点是: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将输出:你

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

标签:

原文地址:http://www.cnblogs.com/demon90s/p/4574223.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!