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

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

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

要解决第二个问题非常easy,在fonts下加入一个中文字体。在显示的时候制定此中文字体

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

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

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

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

另附localizeUtil的实现:

localizeUtil.h

  1. class localizeUtil
  2. {
  3. public:
  4. static bool init();
  5. static const char* getLocalizeStringByKey(std::string key);
  6. static const char* getLocalizeFontName();
  7. static const float getFontSizeH1();
  8. static const float getFontSizeH2();
  9. static const float getFontSizeH3();
  10. static const float getFontSizeH4();
  11. static const float getFontSizeH5();
  12. };

localizeUtil.cpp

  1. #include "localizeUtil.h"
  2. #include "cocos2d.h"
  3.  
  4. USING_NS_CC;
  5.  
  6. static char* fontName;
  7. static char* fontNameChinese;
  8. static char* fontNameEnglish;
  9.  
  10. static char* languageMappingFolder;
  11.  
  12. static char* resourcePath;
  13.  
  14. const char* localizeUtil::getLocalizeStringByKey(std::string key)
  15. {
  16. CCDictionary *chnStrings = CCDictionary::createWithContentsOfFile(resourcePath);
  17. const char *value = ((CCString*)chnStrings->objectForKey(key))->getCString();
  18. return value;
  19. }
  20.  
  21. const char* localizeUtil::getLocalizeFontName()
  22. {
  23. return fontName;
  24. }
  25.  
  26. const float localizeUtil::getFontSizeH1()
  27. {
  28. return 50;
  29. }
  30. const float localizeUtil::getFontSizeH2()
  31. {
  32. return 40;
  33. }
  34. const float localizeUtil::getFontSizeH3()
  35. {
  36. return 30;
  37. }
  38. const float localizeUtil::getFontSizeH4()
  39. {
  40. return 20;
  41. }
  42. const float localizeUtil::getFontSizeH5()
  43. {
  44. return 16;
  45. }
  46. bool localizeUtil::init()
  47. {
  48.  
  49. fontNameChinese = "SimpleGB2312";
  50. fontNameEnglish = "Arial";
  51.  
  52. resourcePath = "local/s%/strings.xml";
  53.  
  54. const char* lc = CCApplication::getInstance()->getCurrentLanguageCode();
  55.  
  56. ccLanguageType currentLanguageType = Application::getInstance()->getCurrentLanguage();
  57. switch (currentLanguageType)
  58. {
  59. case kLanguageChinese:
  60. fontName = fontNameChinese;
  61. languageMappingFolder = "zhcn";
  62. resourcePath = "local/zhcn/strings.xml";
  63. break;
  64. case kLanguageEnglish:
  65. fontName = fontNameEnglish;
  66. languageMappingFolder = "enus";
  67. resourcePath = "local/enus/strings.xml";
  68. break;
  69. case kLanguageSpanish:
  70. fontName = fontNameEnglish;
  71. languageMappingFolder = "es";
  72. resourcePath = "local/es/strings.xml";
  73. break;
  74. case kLanguageFrench:
  75. fontName = fontNameEnglish;
  76. languageMappingFolder = "fr";
  77. resourcePath = "local/fr/strings.xml";
  78. break;
  79. default:
  80. fontName = fontNameEnglish;
  81. languageMappingFolder = "enus";
  82. resourcePath = "local/enus/strings.xml";
  83. }
  84.  
  85. return true;
  86. }

文件夹结构:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXVubnlpbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">

strings.xml

  1. <dict>
  2. <key>mode</key>
  3. <string>Mode</string>
  4. <key>mode_classic</key>
  5. <string>Classic</string>
  6. </dict>

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

  1. Learning Cocos2d-x for WP8(4)——中文显示

    原文:Learning Cocos2d-x for WP8(4)--中文显示 C#(wp7)兄弟篇Learning Cocos2d-x for XNA(4)——中文显示 Cocos2d-x中文显示,似 ...

  2. 【python之路2】CMD中执行python程序中文显示乱码

    在IDLE中执行下面代码,中文显示正常: # -*- coding:utf-8 -*- st=raw_input("请输入内容")print st 但在CMD中执行e:\hello ...

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

    Linux中文显示乱码?如何设置centos显示中文 怎么设置Linux系统中文语言,这是很多小伙伴在开始使用Linux的时候,都会遇到一个问题,就是终端输入命令回显的时候中文显示乱码.出现这个情况一 ...

  4. [django]Django站点admin支持中文显示和输入设置

    正文: Django站点admin支持中文输入设置,操作如下: 1 需要确定的你的数据库的client客户端和服务端的编码设置为utf-8,如果不是,请将其设置成utf-8编码,我采用mysql,详情 ...

  5. Xshell个性化设置,解决Xshell遇到中文显示乱码的问题

    在同事的推荐下,今天开始使用Xshell连接Linux,但是发现一个“遇到中文显示乱码”的问题, 同事的解决方案如下: 平常给Linux上传文件之前,先把文件转换成UTF-8编码形式, 然后设置Xsh ...

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

    最近在用python中的matplotlib画折线图,遇到了坐标轴 "数字+刻度" 混合显示.标题中文显示.批量处理等诸多问题.通过学习解决了,来记录下.如有错误或不足之处,望请指 ...

  7. (转)sqlplus中文显示乱码的问题

    sqlplus中文显示乱码的问题 2010-07-19 11:33:26 分类: LINUX 在windows下sqlplus完全正常,可是到linux下,sqlplus中文显示就出问题了,总是显示“ ...

  8. wkhtmltopdf中文显示空白或者乱码方框

    中文乱码或者空白解决方法 如果wkhtmltopdf中文显示空白或者乱码方框 打开windows c:\Windows\fonts\simsun.ttc拷贝到linux服务器/usr/share/fo ...

  9. 在WCF数据访问中使用缓存提高Winform字段中文显示速度

    在我们开发基于WCF访问方式的Winform程序的时候,一般情况下需要对界面显示的字段进行中文显示的解析.如果是硬编码进行中文显示,那么除了不方便调整及代码臃肿外,性能上没有什么问题,但是不建议这样处 ...

随机推荐

  1. vim之替换命令

    格式:<range>s /<pat1>/<pat2>/gc <range>用来指定替换命令执行的范围: 百分号(%)表示所有行 点(.)表示当前行 美元 ...

  2. perl学习之I/O基础

    1.从标准输入进行输入<STDIN> 2.从钻石操作符进行输入<> 3.参数调用@ARGV 4.向标准输出进行输出 5.用printf进行格式化输出 1.<STDIN&g ...

  3. 【css】报错,错误代码77,CURLE_SSL_CACERT_BADFILE (77)解决方法

    CURLE_SSL_CACERT_BADFILE (77) - 读取 SSL CA 证书时遇到问题(可能是路径错误或访问权限问题) 在微信接口相关开发时容易出现此问题 这一般是因为服务更新了相关的软件 ...

  4. 【linux】【mysql】CentOS7安装mysql5.6.26

    http://www.cnblogs.com/dreamhome/p/4716425.html     linux系统CentOS7到http://mirrors.sohu.com/mysql/下载想 ...

  5. 1、初学探讨PYTHON的itchat和wxpy两库

    最近好奇学习了python,觉得简单明了,但是最头疼的就是调整空格和调试吧,的确调试不如C#使用visual studio 方便,都是使用print()来调试.也许因为我是菜鸟,如果大家还有更好的方法 ...

  6. bash快捷键及输入输出重定向

    bash特性之快捷键:     Ctrl+a: 跳转至命令首部     Ctrl+e: 跳转至命令尾部         Ctrl+l: 清屏     Ctrl+c: 中止或取消         Ctr ...

  7. 咕咕咕,skkyk的博客生活从此开始了

    2019-5-9 咕咕咕,skkyk的博客生活从此开始了 我是划水时长两个半小时的个人OIer skkyk,我喜欢打表,暴零,骗分,瞎搞(律师函警告); 2019-6-14 中考结束的第二天 我们苦逼 ...

  8. 二分查找与 bisect 模块

    Python 的列表(list)内部实现是一个数组,也就是一个线性表.在列表中查找元素可以使用 list.index() 方法,其时间复杂度为O(n).对于大数据量,则可以用二分查找进行优化.二分查找 ...

  9. git (unable to update local ref )

    https://stackoverflow.com/questions/2998832/git-pull-fails-unable-to-resolve-reference-unable-to-upd ...

  10. linux救援

    1.单用户模式(类比win的安全模式) 1.1.开机按任意键 1.2.按E进入编辑模式 1.3.光标移动到第二个(“kernel xxxx”)按e 1.4.在quiet 后面输入“ 1” or “S” ...