cocos2d-x解决中文乱码问题的几种办法
2013-12-01 10:15
351 查看
cocos2d-x解决中文乱码问题的几种办法
昨天改写cocos2d-x的例程,想在其基础上加上一个计分系统。没有分数实在让人没有玩下去的动力!
我在主场景上加上了一个CCLabelTTF,用于显示分数。
但是意外的发现,当内容含有中文时,CCLabelTTF的显示内容为乱码。
无奈只好Google百度寻求答案,明白了这个问题的缘由。
因为cocos2d-x内部是以utf8处理文本的,而VS直接输入时文本编码为GBK,如果添加L标志,则为Unicode编码。
解决这个问题有三种办法:
将源代码文件保存为utf8编码,不过由于编译器的问题,这种方式会导致很多无法预测的问题
将字符串用utf8编码集中存到一文件中,然后用代码读取这些字符串来使用,这种办法还能很好的支持多语言版本
使用字符串时,先将其转换为utf8编码
我最终使用了第三种方法,第一种撇开不说,第二种实现起来比较麻烦,第三种则要方便很多。
一般在windows上,我们使用API MultiByteToWideChar来进行各种编码转换。
不过这东西只能在Windows上用,在cocos2d-x上用就有点不合时宜的感觉,毕竟安卓上可没这个API。
还好cocos2d-x考虑很周到,它自带了一个iconv库
只需要在项目附加依赖项里加入libiconv.lib,并且包含头文件iconv/iconv.h即可使用。
我通过这个库封装了几个编码转换的函数,代码如下
转载地址:http://hi.baidu.com/coofly/item/dcb911f363cba1763c198b7b
相关文章推荐
- Cocos2d-x教程(8)-遮罩层实现捕鱼达人滚动数字表盘
- xcode升级到5.0.2之后,cocos2d-x-2.2下的所有工程,第一次打开时编译报错的解决办法
- 书生教你cocos2d-x-保卫萝卜(四) 推荐
- cocos2d-x 项目创建
- 如何制作一个塔防游戏 Cocos2d-x 3.0alpha0
- cocos2d-x重力感应
- 书生教你cocos2d-x-保卫萝卜(三)
- 移植cocos2d-x 到ubuntu 12.04
- Cocos2d-x--发射多发子弹
- cocos2d-x节点(CCSAXParser.h)API
- cocos2d-x节点(CCThread.h)API
- cocos2d-x节点(CCScriptSupport.h)API
- cocos2d-x节点(CCShaderCache.h)API
- cocos2d-x节点(CCGLProgram.h)API
- cocos2d-x节点(ccGLStateCache.h)API
- cocos2d-x节点(CCAnimation.h)API
- cocos2d-x节点(TransformUtils.h)API
- cocos2d-x节点(CCVertex.h)API
- cocos2d-x节点(ccUtils.h)API
- cocos2d-x节点(ccUTF8.h)API