cocos2d-x wp8 中文显示问题

cocos2d-x项目在wp8下中文显示不了,有两个原因:

1. 本身字符串的utf8编码, 有问题。

2. 显示中文所需要的字体,缺失。

要解决第二个问题很简单,在fonts下添加一个中文字体,在显示的时候制定此中文字体

labelArcade = CCLabelTTF::create("中文字符串", "中文字体名称",字体大小);

至于第一个问题,说的是不能像上文那样直接用字符串写“中文字符串”,解决方案有gb2312ToUnicode的方法,小转换一下子。百度一搜有很多示例代码,恕不赘言,因为这种办法并不是太好--总是要做多语言的嘛,我们本来也不会直接写上中文字符串在那里。

所以,我们建一个文件,专门放置中文字符(还有相应的专门放置英语、法语、西班牙语的文件),然后通过读取文件的方式,读过来的字符串自然已经utf8编码过:

labelArcade = CCLabelTTF::create(localizeUtil::getLocalizeStringByKey("mode_arcade"), localizeUtil::getLocalizeFontName(), localizeUtil::getFontSizeH2());

另附localizeUtil的实现:

localizeUtil.h

class localizeUtil
{
public:
	static bool init();
	static const char* getLocalizeStringByKey(std::string key);
	static const char* getLocalizeFontName();
	static const float getFontSizeH1();
	static const float getFontSizeH2();
	static const float getFontSizeH3();
	static const float getFontSizeH4();
	static const float getFontSizeH5();
};

localizeUtil.cpp

#include "localizeUtil.h"
#include "cocos2d.h"

USING_NS_CC;

static char* fontName;
static char* fontNameChinese;
static char* fontNameEnglish;

static char* languageMappingFolder;

static char* resourcePath;

const char* localizeUtil::getLocalizeStringByKey(std::string key)
{
	CCDictionary *chnStrings = CCDictionary::createWithContentsOfFile(resourcePath);
	const char *value = ((CCString*)chnStrings->objectForKey(key))->getCString();
	return value;
}

const char* localizeUtil::getLocalizeFontName()
{
	return fontName;
}

const float localizeUtil::getFontSizeH1()
{
	return 50;
}
const float localizeUtil::getFontSizeH2()
{
	return 40;
}
const float localizeUtil::getFontSizeH3()
{
	return 30;
}
const float localizeUtil::getFontSizeH4()
{
	return 20;
}
const float localizeUtil::getFontSizeH5()
{
	return 16;
}
bool localizeUtil::init()
{

	fontNameChinese = "SimpleGB2312";
	fontNameEnglish = "Arial";

	resourcePath = "local/s%/strings.xml";

	const char* lc = CCApplication::getInstance()->getCurrentLanguageCode();

	ccLanguageType currentLanguageType = Application::getInstance()->getCurrentLanguage();
	switch (currentLanguageType)
	{
	case kLanguageChinese:
		fontName = fontNameChinese;
		languageMappingFolder = "zhcn";
		resourcePath = "local/zhcn/strings.xml";
		break;
	case kLanguageEnglish:
		fontName = fontNameEnglish;
		languageMappingFolder = "enus";
		resourcePath = "local/enus/strings.xml";
		break;
	case kLanguageSpanish:
		fontName = fontNameEnglish;
		languageMappingFolder = "es";
		resourcePath = "local/es/strings.xml";
		break;
	case kLanguageFrench:
		fontName = fontNameEnglish;
		languageMappingFolder = "fr";
		resourcePath = "local/fr/strings.xml";
		break;
	default:
		fontName = fontNameEnglish;
		languageMappingFolder = "enus";
		resourcePath = "local/enus/strings.xml";
	}

	return true;
}

目录结构:

strings.xml

<dict>
    <key>mode</key>
    <string>Mode</string>
    <key>mode_classic</key>
    <string>Classic</string>
</dict>

cocos2d-x wp8 中文显示问题,布布扣,bubuko.com

时间: 2024-08-10 00:07:29

cocos2d-x wp8 中文显示问题的相关文章

cocos2d-x 3.0 使用Sax解析xml文档(解决中文显示问题)

今天是个好日子,心想的事儿都能成,明天是个好日子,打开了家门儿迎春风... 恩,听着歌写文档生活就是这么享受. 今天以前的邻居大神突然在qq上赞了我一下,这让我异常激动啊..这还要从前前前几天说起,那会无意间看到cocos微信上的一个实话实说活动,反正就是参加了可以抽奖这样子啦,没错,我就是本着那官方T恤去的,本着分子越大分母越大抽奖几率越大的原则,然后就连着发了一番感慨,而且还都是比较罗嗦,没想到隔天cocos君竟然给我回复了,中奖了有木有,cocos2dx的官方T恤,哈哈..然后就是以前的大

【cocos2dx】rapidjson使用方法以及中文显示的解决方法【续】

上一个博客讲了怎么用rapidjson读取中文字符串,但是有一个很明显的缺陷 就是不能直接读取数据编辑器导出的数据.下面我们来修复这个bug并且将代码精简到不到原来的一半大小. 上一博客的地址是:[cocos2dx]rapidjson使用方法以及中文显示的解决方法 不多说 直接上源码吧: 首先,数据编辑器导出的格式是: [{"id":1,"content":"再次按下返回键退出游戏"},{"id":2,"conten

Ubuntu CTRL+ALT+F1~F6 进入命令模式后不支持中文显示的解决办法

前言 我在实验进入linux系统启动xwindow server而不启动KDE GNOME等桌面系统时遇到的问题.只启动x server而不启动桌面系统,在xserver之上运行一个全屏的图形界面程序,这样就能实现该程序对显示器的独占,对一般用户来说他就不能在这台电脑上搞别的动作了,只能用这个程序.一些工业控制.超市收银等应用场景下都会有这样的需求,目前这些程序都运行在windows xp (embeded)之下,也有运行于dos的.由于windows xp太被大众熟悉了,结果这些软件便不能稳定

Atom中文显示乱码问题 UTF-8

Atom中文显示乱码问题 本来就是UTF-8文件,但中文还是显示不了.换了GBK.GB18030也不行. 解决方法: 给atom编辑器设置字体 从菜单中打开 Edit->Open your config选项,或者Packages->Setting views->Open, 找到config.cson文件中的editor子项,或者setting views中的font-family选项,把字体设置成 文泉驿 系列字体才可以显示中文.比如: 文泉驿微米黑,文泉驛微米黑,WenQuanYi M

Qt中文显示

QT默认的编码(unicode)是不能显示中文的,可能由于windows的默认编码的问题,windows默认使用(GBK/GB2312/GB18030),所以需要来更改QT程序的编码来解决中文显示的问题. QT中有专门的一个类来处理编码的问题(QTextCodec). 在QT3中,QApplication可以设置程序的默认编码,但是在QT4中已经没有了该成员函数.可以以下的这些方法来设置编码. 1. 设置QObject的成员函数tr()的编码. QTextCodec::setCodecForTr

解决osgEarth中文显示乱码的几种方法

解决osgEarth中文显示乱码的几种方法 在此感谢那些在路上那个帮助过别人的朋友,谢谢. 方法一: 通过自己写函数转换类型. 下面这三个函数先复制过去吧. void unicodeToUTF8(const std::wstring &src, std::string& result) { int n = WideCharToMultiByte( CP_UTF8, 0, src.c_str(), -1, 0, 0, 0, 0 ); result.resize(n); ::WideCharT

python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)

最近在用python中的matplotlib画折线图,遇到了坐标轴 "数字+刻度" 混合显示.标题中文显示.批量处理等诸多问题.通过学习解决了,来记录下.如有错误或不足之处,望请指正. 一.最简单的基本框架如下:已知x,y,画出折线图并保存.此时x和y均为数字. 1 # -*- coding: utf-8 -*- 2 3 import matplotlib.pyplot as plt #引入matplotlib的pyplot子库,用于画简单的2D图 4 import random 5

Linux中文显示乱码?如何设置centos显示中文

Linux中文显示乱码?如何设置centos显示中文 怎么设置Linux系统中文语言,这是很多小伙伴在开始使用Linux的时候,都会遇到一个问题,就是终端输入命令回显的时候中文显示乱码.出现这个情况一般是由于没有安装中文语言包,或者设置的默认语言有问题导致的.以centos为例,操作Linux怎么查看语言,设置修改语言 1.查看当前系统语言 登陆linux系统打开操作终端之后,输入 echo $LANG可以查看当前使用的系统语言.如 2.查看安装的语言包 查看是否有中文语言包可以在终端输入 lo

ubuntu 中用vim打开txt等文件中文显示乱码的解决方法 &nbsp;

今晚用ubuntu 12.04 的vim编辑网页代码时,发现上面的中文显示乱码.这个html文件是我之前用gedit编辑的,在gedit里面显示正常,可是在vim下显示就是乱码了. 怎么解决ubuntu中vim显示中文乱码的问题呢? 首先,添加中文字符编码: sudo gedit /var/lib/locales/supported.d/local 在打开的文件中添加下面的中文字符集 zh_CN.GBK GBK zh_CN.GB2312 GB2312 zh_CN.GB18030 GB18030