cocos2d-x封装一个转码的工具解决中文乱码可以直接拖过去用通用跨平台
2014-08-16 16:49
706 查看
今天白白给大家分享一个转码的工具函数,如果大家需要在项目中显示中文,可以直接使用,Android和IOS部分都是通用的,不用太麻烦的分平台操作。
转载请注明地址http://blog.csdn.net/u010229677
首先,这个函数是这样的,可以直接拖进去用
首先我们需要下载一个iconv这个库
然后大家将下载到的iconv库解压至项目根目录。也就是和cocos2dx, extensions这些库的同级目录。
将这个库拖到ios里面,这样ios这边就能直接工作了,
对于windows这边,配置一下库就可以了
Android环境,大家照下面方法做就ok
编写iconv库所需的Android.mk。
这步要仔细看了,很多文章这步没写清楚,让我走了许多冤枉路。
进入到刚才解压出的iconv文件夹,用记事本之类的建立一个Android.mk文件,
将下面内容复制到这个文件中,不要写错,很重要的
编写Android项目里面的Android.mk文件,如下图所示
cocos2d-x3.0以前的版本:
cocos2d-x3.0以后的版本:建议把iconv库放到cocos2d文件夹里面,前面操作不便,只是项目的android.mk配置是这样的
这样我们的工作就开顺利开心的完成了
转载请注明地址http://blog.csdn.net/u010229677
首先,这个函数是这样的,可以直接拖进去用
<span style="font-size:18px;"><span style="font-size:18px;">#ifndef __TRANSFORMUTF__ #define __TRANSFORMUTF__ #include "../../../win32-specific/icon/include/iconv.h" #pragma comment(lib,"libiconv.lib") #include "cocos2d.h" using namespace std; //使用方法:string s = GBtoUTF("确定"); 或者 <span style="font-family: Arial, Helvetica, sans-serif;">string s = </span><span style="font-family: Arial, Helvetica, sans-serif;">UTFtoGB</span><span style="font-family: Arial, Helvetica, sans-serif;">("确定");</span> static int code_convert( const char *from_charset, const char *to_charset, const char *inbuf, size_t inlen, char *outbuf, size_t outlen ) { iconv_t cd; const char *temp = inbuf; const char **pin = &temp; char **pout = &outbuf; memset(outbuf,0,outlen); cd = iconv_open(to_charset,from_charset); if(cd==0) return -1; if(iconv(cd,pin,&inlen,pout,&outlen)==-1) return -1; iconv_close(cd); return 0; } /*UTF8 To GB2312*/ static string UTFtoGB( const char *inbuf ) { size_t inlen = strlen(inbuf); char * outbuf = new char[inlen * 2 + 2]; string strRet; if(code_convert("utf-8", "gb2312", inbuf, inlen, outbuf, inlen * 2 + 2) == 0) { strRet = outbuf; } delete [] outbuf; return strRet; } /*GB2312 To UTF8*/ //使用中文时用该函数转换 static string GBtoUTF( const char *inbuf ) { size_t inlen = strlen(inbuf); char * outbuf = new char[inlen * 2 + 2]; string strRet = ""; if(code_convert("gb2312", "utf-8", inbuf, inlen, outbuf, inlen * 2 + 2) == 0) { strRet = outbuf; } delete [] outbuf; return strRet; } #endif</span></span>好了,这样大家就能直接用了,这里使用到了iconv这个库,
首先我们需要下载一个iconv这个库
然后大家将下载到的iconv库解压至项目根目录。也就是和cocos2dx, extensions这些库的同级目录。
将这个库拖到ios里面,这样ios这边就能直接工作了,
对于windows这边,配置一下库就可以了
Android环境,大家照下面方法做就ok
编写iconv库所需的Android.mk。
这步要仔细看了,很多文章这步没写清楚,让我走了许多冤枉路。
进入到刚才解压出的iconv文件夹,用记事本之类的建立一个Android.mk文件,
将下面内容复制到这个文件中,不要写错,很重要的
<span style="font-size:18px;">LOCAL_PATH:= $(call my-dir) #libiconv.so include $(CLEAR_VARS) LOCAL_MODULE := libiconv LOCAL_CFLAGS := \ -Wno-multichar \ -DAndroid \ -DLIBDIR="c" \ -DBUILDING_LIBICONV \ -DIN_LIBRARY LOCAL_SRC_FILES := \ libcharset/lib/localcharset.c \ lib/iconv.c \ lib/relocatable.c LOCAL_C_INCLUDES += \ $(LOCAL_PATH)/include \ $(LOCAL_PATH)/libcharset \ $(LOCAL_PATH)/lib \ $(LOCAL_PATH)/libcharset/include \ $(LOCAL_PATH)/srclib include $(BUILD_STATIC_LIBRARY)</span>
编写Android项目里面的Android.mk文件,如下图所示
cocos2d-x3.0以前的版本:
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes LOCAL_C_INCLUDES += \ $(LOCAL_PATH)/../iconv/include \ $(LOCAL_PATH)/../libiconv/libcharset \ $(LOCAL_PATH)/../libiconv/lib \ $(LOCAL_PATH)/../libiconv/libcharset/include \ $(LOCAL_PATH)/../libiconv/srclib \ $(LOCAL_PATH)/../iconv LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_static LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static LOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_static LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static LOCAL_WHOLE_STATIC_LIBRARIES += libiconv include $(BUILD_SHARED_LIBRARY) $(call import-module,cocos2dx) $(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl) $(call import-module,CocosDenshion/android) $(call import-module,extensions) $(call import-module,external/Box2D) $(call import-module,external/chipmunk) $(call import-module,iconv)
cocos2d-x3.0以后的版本:建议把iconv库放到cocos2d文件夹里面,前面操作不便,只是项目的android.mk配置是这样的
LOCAL_C_INCLUDES += \ $(LOCAL_PATH)/../../iconv/include \ $(LOCAL_PATH)/../../libiconv/libcharset \ $(LOCAL_PATH)/../../libiconv/lib \ $(LOCAL_PATH)/../../libiconv/libcharset/include \ $(LOCAL_PATH)/../../libiconv/srclib \ $(LOCAL_PATH)/../../iconv LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static # LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static # LOCAL_WHOLE_STATIC_LIBRARIES += cocosbuilder_static # LOCAL_WHOLE_STATIC_LIBRARIES += spine_static # LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static # LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static # LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static LOCAL_WHOLE_STATIC_LIBRARIES += libiconv include $(BUILD_SHARED_LIBRARY) $(call import-module,.) $(call import-module,audio/android) $(call import-module,extensions) $(call import-module,editor-support/cocostudio) # $(call import-module,Box2D) # $(call import-module,editor-support/cocosbuilder) # $(call import-module,editor-support/spine) # $(call import-module,editor-support/cocostudio) # $(call import-module,network) # $(call import-module,extensions) $(call import-module,iconv)
这样我们的工作就开顺利开心的完成了
相关文章推荐
- 封装好的一个的Toast工具类(可以直接调用)
- cocos2d-x解决中文乱码问题(详细)!(跨平台)
- 关于Dbeaver通用数据库连接工具 连接informix数据库中文乱码解决
- 一个命令解决Linux下XPDF中文乱码
- asp.net传中文值出现乱码的一个解决方法
- 使用request.getRequestDispatcher请求转发到一个页面中文乱码解决
- 一个可以找出源代码中所有中文的工具
- 彻底解决android读取中文txt的乱码(自动判断文档类型并转码
- 写了一个查询数据库的程序,不熟的Tomcat6。查询条件为英文时运行正常,为中文时出现乱码。后在tomcap的server.xml中加入useBodyEncodingForURI="true解决了问题
- 记录一个解决jsp向action传值时中文乱码的问题
- DBeaver 一个通用数据库管理工具跨平台,
- 一个命令解决Linux下XPDF中文乱码
- 一个发邮件的类,带验证功能,可以发html内容,可以添加附件,并解决附件乱码问题。
- Oracle数据库工具中文显示乱码问题的解决
- 彻底解决android读取中文txt,lrc的乱码(自动判断文档类型并转码)
- MySQL中文常见乱码问题解决方法其一,可以解决觉大多是乱码问题。如果你的中文显示为?的时候一般都有效。
- 今天在网络上找到了一个比较好的解决Rhythmbox中文乱码的问题的方法
- Oracle数据库工具中文显示乱码问题的解决
- 使用xshell登录中文版CentOS时,在xshell下显示中文乱码,通过如下办法可以有效的解决乱码问题
- JavaScript(js) 前台 参数传递乱码 转码 问题--已解决! 中文字符乱码