cocos2d-x解决中文乱码问题的几种办法

本文介绍了在cocos2d-x中遇到中文乱码问题的原因及三种解决方案,包括修改源代码文件编码、存储字符串到文件读取、以及使用iconv库进行编码转换。最后展示了如何使用iconv库的函数a2u处理中文字符串,实现cocos2d-x正确显示中文。
摘要由CSDN通过智能技术生成


cocos2d-x解决中文乱码问题的几种办法

昨天改写cocos2d-x的例程,想在其基础上加上一个计分系统。

没有分数实在让人没有玩下去的动力!


我在主场景上加上了一个CCLabelTTF,用于显示分数。

但是意外的发现,当内容含有中文时,CCLabelTTF的显示内容为乱码。


无奈只好Google百度寻求答案,明白了这个问题的缘由。

因为cocos2d-x内部是以utf8处理文本的,而VS直接输入时文本编码为GBK,如果添加L标志,则为Unicode编码。


解决这个问题有三种办法:

  1. 将源代码文件保存为utf8编码,不过由于编译器的问题,这种方式会导致很多无法预测的问题

  2. 将字符串用utf8编码集中存到一文件中,然后用代码读取这些字符串来使用,这种办法还能很好的支持多语言版本

  3. 使用字符串时,先将其转换为utf8编码


我最终使用了第三种方法,第一种撇开不说,第二种实现起来比较麻烦,第三种则要方便很多。


一般在windows上,我们使用API MultiByteToWideChar来进行各种编码转换。

不过这东西只能在Windows上用,在cocos2d-x上用就有点不合时宜的感觉,毕竟安卓上可没这个API。

还好cocos2d-x考虑很周到,它自带了一个iconv库

只需要在项目附加依赖项里加入libiconv.lib,并且包含头文件iconv/iconv.h即可使用。

我通过这个库封装了几个编码转换的函数,代码如下


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值