cocos2dx的中文乱码

cocos2dx的中文乱码,第1张

概述最近2周才开始学习cocos2dx,先前由于一些原因一直没有写Blog,大多知识都知识记在笔记上面。现在也翻得不多,往后就blog上面了 省得每天都带着笔记。。 本人C++也是萌萌哒新人水平,看cocos2dx还是有一定的鸭梨的。先前很顺利搞完cocos2dx 2.2.1开发环境,按照TestCpp里面得代码,写了个小demo之后,就想着“都要进步的,为什么不去看新点的版本呢?”。于是去搞了coc

最近2周才开始学习cocos2dx,先前由于一些原因一直没有写Blog,大多知识都知识记在笔记上面。现在也翻得不多,往后就blog上面了 省得每天都带着笔记。。
本人C++也是萌萌哒新人水平,看cocos2dx还是有一定的鸭梨的。先前很顺利搞完cocos2dx 2.2.1开发环境,按照TestCpp里面得代码,写了个小demo之后,就想着“都要进步的,为什么不去看新点的版本呢?”。于是去搞了cocos2dx-v3.6的开发环境,这一搞不要紧,一周多过去了,那个破环境还是好些坑!真是气死了。于是安安顿顿回来按照2.2.1先学着再说。

这篇Blog主要就记一下目前我是怎么解决乱码问题的吧。

乱码问题很常见,通常都是因为中文编码集不一致。一般都统一成UTF-8,而VS默认编码集为gbk,windows 下 eclipse什么的里面都默认是gbk。所以定义一个宏用于转码:

//需要用到libiconv.lib,在项目的依赖附加项里加上。#ifdef WIN32#define UTEXT(str) GBKToUTF8(str)#else#define UTEXT(str) str#endif#ifdef WIN32#include "platform/third_party/win32/iconv/iconv.h"#include "string.h"#include "malloc.h"static char g_GBKConvUTF8Buf[5000] = {0};const char* GBKToUTF8(const char *strChar){    iconv_t iconvH;    iconvH = iconv_open("utf-8","gb2312");    if (iconvH == 0)    {        return NulL;    }    size_t strLength = strlen(strChar);    size_t outLength = strLength<<2;    size_t copyLength = outLength;    memset(g_GBKConvUTF8Buf,0,5000);    char* outbuf = (char*) malloc(outLength);    char* pBuff = outbuf;    memset( outbuf,outLength);    if (-1 == iconv(iconvH,&strChar,&strLength,&outbuf,&outLength))    {        iconv_close(iconvH);        return NulL;    }    memcpy(g_GBKConvUTF8Buf,pBuff,copyLength);    free(pBuff);    iconv_close(iconvH);    return g_GBKConvUTF8Buf;}#endif

调用的时候只需要调用UTEXT(str)就好啦。
其实,以上也不是自己写的啦,不过测试可用就是啦。

另外,为了软件国际化以及更好的管理我们的字符串资源,我们可以通过配置文件来管理。
在资源文件中新建一个pList文件(其实也是一种xml文件啦)

<?xml version="1.0" enCoding="UTF-8"?><!DOCTYPE pList PUBliC "-//Apple//DTD PList 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><pList version="1.0"><dict>    <key>data</key>    <dict>        <key>hello</key>        <string>YS尘笑的世界</string>        <key>cocos2d.x.display_fps</key>        <true/>        <key>cocos2d.x.gl.projection</key>        <string>3d</string>        <key>cocos2d.x.texture.pixel_format_for_png</key>        <string>rgba8888</string>        <key>cocos2d.x.texture.pvrv2_has_Alpha_premultiplIEd</key>        <false/>    </dict>    <key>Metadata</key>    <dict>        <key>format</key>        <integer>1</integer>    </dict></dict></pList>

如果是要以配置文件方式去加载的话 在AppDelegate里面实例化CCDirector之前

//参数为资源目录下的相对路径CCConfiguration::sharedConfiguration()->loadConfigfile("config/strings.pList");

调用的时候:

CCConfiguration *conf = CCConfiguration::sharedConfiguration();

然后就是愉快的getCString(key,default)了
感觉有点像AndroID里面的SP那样子。

结合起来,例子:
(头文件不要忘加喔~)

CCConfiguration *conf = CCConfiguration::sharedConfiguration();cclabelTTF* pLabel = cclabelTTF::create(UTEXT(conf->getCString("hello","unkNown")),"Marker Felt",24);
总结

以上是内存溢出为你收集整理的cocos2dx的中文乱码全部内容,希望文章能够帮你解决cocos2dx的中文乱码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1063854.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存