cocos2d-x 3.2 在window平台vs2012下解决中文乱码问题

本文介绍了解决VS2012中文乱码问题的方法,主要针对cocos2d-x项目中的中文显示问题。提供了三种解决方案,并推荐了在使用过程中最简便有效的一种。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

坑底的vs2012搞了一上午才发现乱码问题是怎么回事


在其他平台下文件编码一般都是utf-8,可是在vs2012上面使用的是gb2312,问题来了,你要是想输入中文就是乱码

解决办法很简单的


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) ;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值