cocos2d-x : 解决中文乱码问题

在开发中常会遇到显示中文的情况,但是如果不加处理会出现乱码的问题。

一般会有日志乱码窗体上的字体乱码

原因:

vs2015 默认的编码格式是GBK/GB312,而在输出的时候,都是以utf-8 格式输出的

所以会出现乱码的情况

例如新建一个项目,将默认显示的Hello World 改为中文。

默认显示:

将Hello World 改为中文:

显示:

 

解决:

方法一:修改默认的编码格式

文件—>高级保存选项:

 

选择 utf-8 无签名 :注意: 无签名,如果选择有签名,在移植到ios 或者 android 平台,还是会出现乱码!!!

 

然后再次运行:

 

还是出现了乱码,这是为什么呢?

原因就是 Lable  标签的字体库。

我们可以在随便网上下载一种中文字体库,替换掉

例如,我下载了幼圆体:https://download.csdn.net/download/lijia1201900857/11226832

然后设置

    auto label = Label::createWithTTF("小明", "fonts/youyuan.ttf", 24);

 

日志打印也是一样,可以直接修改编码格式。

但是,这样做也会有些问题。我们先把编码格式改为 GB2312

然后日志输出 一句中文:log("大家好")

会出现乱码:

 

然后,将编码格式改为 utf-8 (无签名),然后运行:

报错:

错误    C2001    常量中有换行符 

错误    C2143    语法错误: 缺少“;”(在“{”的前面)  

 

这种只会在window 下出现,你可以在后边加 空格或者一些字符 来解决,但是即使这样也会有部分乱码

 

不过这种情况,在ios  和android下是正常的。

 

方法二:使用XMl 资源文件

我们创建一个资源文件:例如   string.xml

 <dict>  
   <key>welcome</key>  
    <string>欢迎你</string>  
	 <key>dear</key>  
     <string>亲爱的</string>  
 </dict>

然后代码中调用

// 获取资源文件
auto strings = Dictionary::createWithContentsOfFile("strings.xml");

// 根据 key  查找字体
auto str = ((String *)strings->objectForKey("welcome"))->getCString();

显示结果:

这种方法不用改变编码格式,而且比较规范。推荐使用

方法三:代码转换字体格式

即通过代码将 Gb2312 格式转为utf-8 ,这种没在代码中使用,就不详细介绍了。有兴趣的可以网上搜索。

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值