Cocos2d-x 对于中文的支持-----iconv库
Cocos2d-x 对于中文的支持-----iconv库
转自:http://momowing.diandian.com/post/2013-01-16/40047183777
我们在win32下创建类的时候,文件都是默认的ANSI的格式,如果你使用了中文,那么你在win32下就会看到乱码。当然,移植Android的时候,你把文件格式改为UTF-8即可。
但是为了方便win32下的调试,也为了省事点,我们需要一种方法能直接在win32和Android下显示中文的,这时候我们就需要用到iconv库的,cocos2d-x自带第三方库iconv。
在需要用到的地方,我们只要这么声明就可以:
12#include
"platform\third_party\win32\iconv\iconv.h"#pragma
comment(lib,"libiconv.lib")或者在VS中这么处理:
当然还是得加上
1#include
"platform\third_party\win32\iconv\iconv.h"这样子你就能引用cocos2d-x中自带的iconv库了。
但是当你移植到Android的时候,也许你正在使用cygwin编译,然后发现它报了:
convert_open等方法没找到的错误,因为Android手机上面是不带这个库的,所以你没法找到相关的方法。
这时候我能想到的就是自己去搞一个iconv库来编译到Android上面使用了。
首先:你要去网上下一个iconv库,这边我给出我用的iconv库,虽然不能保证都能用,但是至少我在Android2.3上面是没问题的。下载链接
或许你也可以在网上找到合适的iconv库。
其次:把iconv库解压放到cocos2d-x的根目录下
然后:修改你Android的mk。这里也给出mk的添加代码,如下:
12345678910111213141516LOCAL_C_INCLUDES
:= $(LOCAL_PATH)/../../../HelloWorld/proj.win32 \$(LOCAL_PATH)/../../../HelloWorld/Classes
\$(LOCAL_PATH)/../../../iconv
\$(LOCAL_PATH)/../../../iconv/include
\$(LOCAL_PATH)/../../../iconv/libcharset
\$(LOCAL_PATH)/../../../iconv/libcharset/lib
\$(LOCAL_PATH)/../../../iconv/libcharset/includeLOCAL_WHOLE_STATIC_LIBRARIES
:= iconv cocos2dx_static cocosdenshion_static cocos_extension_staticinclude
$(BUILD_SHARED_LIBRARY)$(call
import-module,CocosDenshion/android) \$(call
import-module,cocos2dx) \$(call
import-module,extensions) \$(call
import-module,iconv)最后:给出转换为UTF-8的格式的代码,如下:
123456789101112131415161718192021222324252627282930313233343536373839intDataController::code_convert(
constchar
*from_charset,constchar
*to_charset,constchar
*inbuf,size_tinlen,
char*outbuf,
size_toutlen
){iconv_t
cd;constchar
*temp = inbuf;constchar
**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);return0;}/*UTF8
To GB2312*/string
DataController::u2a(constchar
*inbuf ){size_tinlen
=strlen(inbuf);char*
outbuf =newchar[inlen
* 2 + 2];string
strRet;if(code_convert("utf-8","gb2312",
inbuf, inlen, outbuf, inlen * 2 + 2) == 0){strRet
= outbuf;}delete[]
outbuf;returnstrRet;}/*GB2312
To UTF8*/
//使用中文时用该函数转换string
DataController::a2u(constchar
*inbuf ){size_tinlen
=strlen(inbuf);char*
outbuf =newchar[inlen
* 2 + 2];string
strRet;if(code_convert("gb2312","utf-8",
inbuf, inlen, outbuf, inlen * 2 + 2) == 0){strRet
= outbuf;}delete[]
outbuf;returnstrRet;}PS: 链接无法直接点击下载的话,请使用右键->迅雷下载
Cocos2d-x 对于中文的支持-----iconv库的更多相关文章
- zabbix开启对中文的支持--&&--中文乱码解决方法
zabbix不支持中文图 开启zabbix对中文的支持 原来zabbix默认把对中文的支持给关闭了,我们需要修改zabbix的php源文件. 修改站点根目录下include/locales.inc.p ...
- 解决嵌入式linux系统下iconv库的移植问题
一.解决问题 在arm开发板上使用framebuff,在汉字显示时,因为只有gb2312的16*16的汉字字库,而ubuntu16.04默认 的编码方式时utf-8,因此需要进行转码(ut ...
- Linux下安装libiconv使php支持iconv函数
libiconv组件安装好了可以让我们php支持iconv函数了,这个函数的作用就是字符编码强制转换了,下面和111cn小编一起来看一个Linux中安装libiconv使php支持iconv函数的例子 ...
- cocos2dx使用了第三方库照样移植android平台-解决iconv库的移植问题
当我写这篇文章的时候我是怀着激动的心情的,因为我又解决了一个技术问题.你可能对题目还一知半解,这是什么意思,我之所以要写这篇文章就是要解决当我们在cocos2dx中使用了第三方库的时候,移植到andr ...
- Source Insight中文操作支持的宏
以下是Source Insight中文字符串支持的宏的实现,在此做个备份. 代码来自网上,非笔者所写.原有代码有个明显的Bug(Del的时候会导致多删除一个字符和多插入一个空格),已经被笔者fix掉. ...
- Raneto中文搜索支持
背景 因业务部门需要在线软件使用说明文档,但我们资源不足,故我想找一个开源的知识库,发现 Raneto不错,决定使用. 官方文档相当清晰,部署完成,发布一些文章,启动项目,交由业务同事测试使用,于是我 ...
- Mybatis Generator的model生成中文注释,支持oracle和mysql(通过实现CommentGenerator接口的方法来实现)
自己手动实现的前提,对maven项目有基本的了解,在本地成功搭建了maven环境,可以参考我之前的文章:maven环境搭建 项目里新建表时model,mapper以及mapper.xml基本都是用My ...
- SciTE: 中文字符支持问题
SciTE: 中文字符支持问题 SciTE(Scintilla Text Editor)是一个体积小巧的文本编辑器. 但是它默认的设置对中文字符处理不好,其实只要对它进行相应的配置,就可以了. 1 ...
- cenos 上的php 支持GD库问题
---恢复内容开始--- thinkphp 开发的项目verify类无法引用,原因是没有开启gd库 环境:CentOS 6.4,php-5.3.3需求:php支持GD库解决方案:GD是Linux下的一 ...
随机推荐
- html5 touch事件实现触屏页面上下滑动(一)
最近做的做那个app的项目由于用overflow:hidden导致了很多问题,于是决定研究下html5的touch事件.想找个全面点的帖子真是难死了,虽然好多关于html5 touch的文章但大多都是 ...
- unity3d5.2.3中 调整视角
按住alt键不放,然后左边的手的图标会变成一个眼睛,在Scene中移动.就会发现可以调整视角了
- oracle 11g SQL Developer instead of isqlplus
Oracle11g的新工具SQL DEVELOPER,替代了 isqlplus 1.创建连接方式 2.SQL输入窗口 3.表的结构及其他信息查阅 4.SQL语句测试 5.创建表 6.用户授权 7.数据 ...
- java.lang.ClassNotFoundException: org.hibernate.annotations.common.reflection.MetadataProvider
Caused by: java.lang.NoClassDefFoundError: org/hibernate/annotations/common/reflection/MetadataProvi ...
- attachEvent,addEventListener事件绑定
兼容各主流浏览器的事件绑定(在同一个事件上添加多个处理函数). 1.绑定方法: //IE attachEvent(事件名, 函数) oBtn.attachEvent('onclick', aaa); ...
- codeforces 333A - Secrets
题意:保证不能正好配齐n,要求输出可以用的最大硬币数. 注意如果用到某种硬币,那么这种硬币就有无穷多个.所以11=3+3+3+3,12=9+9,13=3+3+3+3+3 #include<cst ...
- 关于python中使用mongodb模块,save和insert的小问题
今天写python脚本的时候发现这样一个问题: import os , string , datetime ,pymongo; conn = pymongo.Connection("127. ...
- 【原创】回溯线搜索 Backtracking line search
机器学习中很多数值优化算法都会用到线搜索(line search).线搜索的目的是在搜索方向上找到是目标函数\(f(x)\)最小的点.然而,精确找到最小点比较耗时,由于搜索方向本来就是近似,所以用较小 ...
- poj 3260 The Fewest Coins
// 转载自http://blog.163.com/benz_/blog/static/18684203020115721917109/算法不难看出,就是一个无限背包+多重背包.问题在于背包的范围.设 ...
- PHP最佳实践(译)
原文: PHP Best Practices-A short, practical guide for common and confusing PHP tasks 译者:youngsterxyf 最 ...