在Cocos2dx项目中中文显示乱码是一件很蛋疼的事情,虽然这个在vs上是可以通过改变代码的Unicode格式解决的,但是难保在其他地方不出问题。
关于中文乱码问题,网上有很多解决办法,不过个人在这里推荐的是最简单最靠谱的解决办法,不但可以解决中文乱码问题,还可以顺便解决国际化问题。OK,直接看图
细心的亲们在前面一篇应该已经看到了,窗口上方中间的名字是乱码,明明我在代码中设置的是“超级玛丽”,如图
可得到想效果却是:
OK,这就是传说中的中文乱码。如何解决呢。这个问题曾经在一度困扰我良久。不过后来我看到这些资料:http://cn.cocos2d-x.org/tutorial/show?id=1633
之后发现,确实完美解决,这里给出我的源码:
Chinese.h
/** * 中文显示 */ #ifndef _CHINESE_H_ #define _CHINESE_H_ #include <string> #include <cocos2d.h> using namespace std; using namespace cocos2d; std::string ChineseWord(const char* word); #endif
Chinese.cpp
/** * 实现对zh_CN.xml的中文字符的显示 */ #include "Chinese.h" /** * 中文读取 */ std::string ChineseWord(const char* word) { ValueVector word_vec = FileUtils::getInstance()->getValueVectorFromFile("zh_CN.xml"); auto word_map = word_vec.at(0).asValueMap(); string wordValue = word_map.at(word).asString(); return wordValue.c_str(); }
然后你需要到Resources目录下去创建一个名叫zh_CN.xml的xml文件然后写下如下代码
<?xml version="1.0" encoding="UTF-8"?> <plist version="1.0"> <array> <dict> <key>game_name</key> <string>超级玛丽</string> </dict> </array> </plist>
然后保存,注意,这里需要保存为UTF-8格式。
比如在AppDelegate.cpp中加入#include "Chinese.h"
glview = GLView::create(ChineseWord("game_name"));