cocos2d:解决中文乱码方案-1
2014-03-28 00:07
316 查看
转载于:/article/2855035.html
一 介绍
最近由于各种各样的原因,好长时间没有学习cocos2d-x了。突然有种害怕的感觉,这样下去,以前学的关于cocos2d-x的一点皮毛会彻底忘记的,下次再学,估计又得重头开始了。所以,还是要平时多多使用吧,持之以恒最重要了...
由于在cocos2d-x中直接使用中文会出现乱码,谁让cocos2d-x是由cocos2d而来,而cocos2d这东西是老外写的呢?通常解决中文乱码有两种方法:
(1)使用iconv库,cocos2d-x中提供了这个库,但是只是在win32平台,当程序移植到Android等平台时,需要自己下载iconv库编译。
(2)将中文字符串写到XML文件中(注意XML文件格式保存为UTF-8),然后解析XML文件,格式可以仿照Android中的strings.xml,而且这种方法能方便以后的国际化。
通过比较,可以很容易的发现第二种方法更好,那么下面就介绍第二种方法,让我们能在cocos2d-x程序中使用中文,彻底解决中文乱码问题。
二 实现
1 新建XML文件,按照一定的格式,输入相应要显示的中文,最后一定需要使用UTF-8格式保存文件
<dict> <key>Hello</key> <string>你好!</string> <key>Info</key> <string>我是hahaya。</string> </dict>
2 代码实现
/** 在cocos2d-x中使用中文 **/
//利用CCDictionary来读取xml
CCDictionary *strings = CCDictionary::createWithContentsOfFile("strings.xml");
//读取Hello键中的值 objectForKey根据key,获取对应的string
const char *hello = ((CCString*)strings->objectForKey("Hello"))->m_sString.c_str();
//读取Info键中的值
const char *info = ((CCString*)strings->objectForKey("Info"))->m_sString.c_str();
//显示
CCLabelTTF *labelHello = CCLabelTTF::create(hello, "Arial", 24);
labelHello->setPosition( ccp(size.width / 2, size.height - 50) );
this->addChild(labelHello, 1);
CCLabelTTF *labelInfo = CCLabelTTF::create(info, "Arial", 30);
labelInfo->setPosition( ccp(size.width / 2, size.height - 100) );
this->addChild(labelInfo, 1);
3 程序运行效果
一 介绍
最近由于各种各样的原因,好长时间没有学习cocos2d-x了。突然有种害怕的感觉,这样下去,以前学的关于cocos2d-x的一点皮毛会彻底忘记的,下次再学,估计又得重头开始了。所以,还是要平时多多使用吧,持之以恒最重要了...
由于在cocos2d-x中直接使用中文会出现乱码,谁让cocos2d-x是由cocos2d而来,而cocos2d这东西是老外写的呢?通常解决中文乱码有两种方法:
(1)使用iconv库,cocos2d-x中提供了这个库,但是只是在win32平台,当程序移植到Android等平台时,需要自己下载iconv库编译。
(2)将中文字符串写到XML文件中(注意XML文件格式保存为UTF-8),然后解析XML文件,格式可以仿照Android中的strings.xml,而且这种方法能方便以后的国际化。
通过比较,可以很容易的发现第二种方法更好,那么下面就介绍第二种方法,让我们能在cocos2d-x程序中使用中文,彻底解决中文乱码问题。
二 实现
1 新建XML文件,按照一定的格式,输入相应要显示的中文,最后一定需要使用UTF-8格式保存文件
<dict> <key>Hello</key> <string>你好!</string> <key>Info</key> <string>我是hahaya。</string> </dict>
<dict> <key>Hello</key> <string>你好!</string> <key>Info</key> <string>我是hahaya。</string> </dict>
2 代码实现
/** 在cocos2d-x中使用中文 **/
//利用CCDictionary来读取xml
CCDictionary *strings = CCDictionary::createWithContentsOfFile("strings.xml");
//读取Hello键中的值 objectForKey根据key,获取对应的string
const char *hello = ((CCString*)strings->objectForKey("Hello"))->m_sString.c_str();
//读取Info键中的值
const char *info = ((CCString*)strings->objectForKey("Info"))->m_sString.c_str();
//显示
CCLabelTTF *labelHello = CCLabelTTF::create(hello, "Arial", 24);
labelHello->setPosition( ccp(size.width / 2, size.height - 50) );
this->addChild(labelHello, 1);
CCLabelTTF *labelInfo = CCLabelTTF::create(info, "Arial", 30);
labelInfo->setPosition( ccp(size.width / 2, size.height - 100) );
this->addChild(labelInfo, 1);
/** 在cocos2d-x中使用中文 **/ //利用CCDictionary来读取xml CCDictionary *strings = CCDictionary::createWithContentsOfFile("strings.xml"); //读取Hello键中的值 objectForKey根据key,获取对应的string const char *hello = ((CCString*)strings->objectForKey("Hello"))->m_sString.c_str(); //读取Info键中的值 const char *info = ((CCString*)strings->objectForKey("Info"))->m_sString.c_str(); //显示 CCLabelTTF *labelHello = CCLabelTTF::create(hello, "Arial", 24); labelHello->setPosition( ccp(size.width / 2, size.height - 50) ); this->addChild(labelHello, 1); CCLabelTTF *labelInfo = CCLabelTTF::create(info, "Arial", 30); labelInfo->setPosition( ccp(size.width / 2, size.height - 100) ); this->addChild(labelInfo, 1);
3 程序运行效果
相关文章推荐
- Cocos2d-x 3.1.1 学习日志4--cocos2d-x解决中文乱码问题的几种办法
- cocos2dc-x解决中文乱码
- 页面编码为GBK时 jquery 提交ajax数据完美解决中文乱码方案
- Imail8.x 升级到Imail2006后中文乱码问题解决方案
- cocos2d-x 3.2 在window平台vs2012下解决中文乱码问题
- [cocos2d-x] --- 完美解决中文乱码
- Cocos2d-x初入学堂(7)-->win32显示中文乱码解决方法
- cocos2d-x:读取指定目录下的文件名+解决中文乱码(win32下有效)
- cocos2d-x win32 log 中文乱码解决办法
- cocos2d-x解决中文乱码问题(详细)!(跨平台)
- cocos2d-x解决中文乱码问题的几种办法
- 解决linux下oracle导入数据中文乱码方案
- cocos2d-x 3.4 中文乱码解决之道
- 【Cocos2d-x游戏开发】解决Cocos2d-x中文乱码的三种方法
- 一种解决在Linux环境下发送短信中文乱码问题的方案
- COCOS2D-X 3.0BETA2 版本LabelTTF中文显示乱码的解决办法
- 页面编码为GBK时 jquery 提交ajax数据完美解决"中文乱码"方案
- spring提供的解决中文乱码方案
- 彻底解决Spring MVC中文乱码问题的方案
- 解决cocos2d-x 中文乱码的问题