zoukankan      html  css  js  c++  java
  • 解决cocos2dx在VS2012中文版环境下不支持中文的问题

      首先要明确的一点是:cocos2dx是支持中文的。因为其编码格式为UTF-8(无签名)——这只是我在网上找到的结论,并非从官方获取,因此不能十分确定,不过应该无误。

      那么,为什么在VS2012环境下,cocos2dx不能正确显示中文呢?

      这是因为二者编码格式不一致。VS2012中文版的默认编码格式为GB2312-80(我不确定英文版的格式如何,总之应该不是UTF-8)。在GB2312-80编码格式中,一个中文占2个字节,而在UTF-8格式中,一个中文占3个字节。这就势必会出现乱码。

      找到了原因,办法就很清楚了。目前我找到两个比较简单的办法:1.更改源文件的编码格式;2.令cocos2d-x程序从UTF-8(无签名)格式的文本中读取中文字符。具体方法如下:

    1.更改源文件的编码格式

      VS2012中文版提供了直接修改源文件默认编码格式的方法,选择:文件->高级保存选项,然后在里面选择编码为Unicode(UTF-8 无签名)。之后,该源文件就是UTF-8格式的编码了,自然能够使cocos2d-x正确解析。且实验证明,使用cocos run -p android在安卓机上运行,也能够正确显示中文。

    2.从文件中读取中文字符

      网上查阅资料,大多推荐这种方法。可以使用FileUtils的单例对象读取文本文件、列表文件。其getValueVectorFromFile、getValueMapFromFile、getStringFromFile等方法可以方便的提取出文本内容。只需要将欲读取的文件的编码格式设置为UTF-8(无签名)就可以正确获取中文了。

    TIPS:如何从一个中文字符串中获取单个中文字符?

      如同遍历普通字符串一样,有时候也会需要遍历中文字符串。这时候就不能用普通的遍历方法了,这是因为一个中文占据了三个字节,读取时候应该准备四个字节来存放它,最后一个字节为'',如此方能正确读到一个中文字符。代码如下:

    //buf读到的是你
    char buf[4] = {0};
    memcpy(buf, "你好", 3);
    log ("one chinese char: %s", buf);

      log将输出:你

  • 相关阅读:
    字典的增删改查
    列表的增删改查 and 元祖
    基础数据类型
    python初始1
    python初始
    android APP 中微信分享功能实现 的总结
    android ADT 版本过低的解决办法
    android 布局: LinearLayout如何使TextView中的内容居中显示
    android获取项目下的一张图片的绝对路径问题以及解决方法
    android 4高级编程(第三版)
  • 原文地址:https://www.cnblogs.com/demon90s/p/4574223.html
Copyright © 2011-2022 走看看