zoukankan      html  css  js  c++  java
  • Cocos2d-x 3.1.1 学习日志4--cocos2d-x解决中文乱码问题的几种办法

       做个打飞机的游戏,由于版本号太新,网上基本没有教教程,我的版本号是cocos2d-x 3.1.1的。今天遇到cocos2dx中中文乱码的问题。无奈仅仅好Google百度寻求答案,明确了这个问题的缘由。由于cocos2d-x内部是以utf8处理文本的,而VS直接输入时文本编码为GBK。假设加入L标志,则为Unicode编码。

        解决问题有三种办法:

    1. 将源码文件保存为utf8编码,只是因为编译器的问题,这样的方式会导致非常多无法预測的问题

    2. 将字符串用utf8编码集中存到一文件里,然后用代码读取这些字符串来使用,这样的办法还能非常好的支持多语言版本号

    3. 使用字符串时。先将其转换为utf8编码

    我终于使用了第三种方法,第一种撇开不说,另外一种实现起来比較麻烦。第三种则要方便非常多。

       //加这个函数。G2U,我自己写的函数名。
    glview=GLView::create(G2U("飞机大战"));


    //然后把这个函数加上

    char* AppDelegate::G2U(const char* gb2312)  
    {  
    int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);  
    wchar_t* wstr = new wchar_t[len+1];  
    memset(wstr, 0, len+1);  
    MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);  
    len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);  
    char* str = new char[len+1];  
    memset(str, 0, len+1);  
    WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);  
    if(wstr) delete[] wstr;  
    return str;  
    }
        

    //然后在头文件中面加上函数声明就能够了

    char*  G2U(const char* gb2312) ; 

    本人cocos2dx 2.x和3.x的源代码淘宝地址(欢迎大家光顾):https://shop141567464.taobao.com/?

    spm=a313o.7775905.1998679131.d0011.aYDdAj

    不懂的能够加我的QQ群: 239982941(一起学习cocos2dx

         

  • 相关阅读:
    C++_重载、重写和重定义的区别
    C++静态库与动态库
    C++ 中重载运算符 “<” 及 friend属性
    C++中,关于#include<***.h>和#include"***.h"的区别
    static_cast, dynamic_cast, const_cast讨论
    浅析C++中static关键字
    C语言包含头文件时用引号和尖括号的区别
    vc实现透明位图,透明背景
    VS2008调试技巧——断点失效
    Spring解决循环依赖的理解
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5281412.html
Copyright © 2011-2022 走看看