Cocos2d-x下使用iconv库
客户端使用的是cocos2d-x-2.0.4,是一个比较老的版本了。使用cygwin和eclipse交叉编译出APK包。环境搭建另外写一篇文章,这边主要讲使用iconv库。很多人尝试在解决乱码问题时,也都会尝试使用iconv库,但因为遇到各种问题而放弃,比较常见的有找不到"iconv.h",或者是编译之后找不到iconv_open,iconv_close等函数。 在这次使用iconv库的过程中,参考了一些文章,大家也可以移步去看看。 http://bbs.csdn.net/topics/390285784?page=1#post-393310132 http://codingnow.cn/cocos2d-x/1038.html 最近找到另外一篇文章,讲的也不错也很简洁,也可以参考下(2014/02/25) http://blog.csdn.net/smileyuping/article/details/9635365 乱码问题目前遇到的是写在客户端上的文字在真机上乱码,服务端发送到客户端的文字乱码。以前看到一篇文章,说有三种解决方案。 1、客户端全部使用UTF-8文件。 这种办法对于写在客户端上的文字还是挺有用的,但对于服务端发送过来的中文就显示乱码了,但如果是单机还是挺推荐的。可以用宏定义的方法将固定的内容定义在某个文件,如果想发展国外市场版本,可以直接拿这个文件给翻译。 2、使用iconv库。 当时也尝试过,但总是遇到各种问题,加上进度问题,就放弃了,转而使用第1种方法。 3、使用xml文件读取。 这个对于单机游戏来说,也是不错的,省很多麻烦,特别是以后想发展国外市场需要多语言版的。配上rapidxml解析库,还是挺不错的。 ___________________________________________________________ iconv的配置使用过程: 1、默认是搭建好安卓打包环境的。 2、下载iconv库。 大家可以去官网上下载:http://ftp.gnu.org/pub/gnu/libiconv/ 网速不好的或者打不开的,可以到我的资源里边下载: http://download.csdn.net/detail/alex_my/6036049 大家下载下来后,比如是libiconv-114,可以将文件夹重命名成iconv。 3、解压iconv库 大家将下载到的iconv库解压至项目根目录。也就是和cocos2dx,extensions这些库的同级目录。gameclient01是我的游戏代码,详情可以见Cocos2d-x 搭建安卓编译环境
4、编写iconv库所需的Android.mk。 这步要仔细看了,很多文章这步没写清楚,让我走了许多冤枉路。 进入到刚才解压出的iconv文件夹,用记事本之类的建立一个Android.mk文件,这其实相当于linux的makefile文件。 Android.mk内容:
这部分不要写错了,大家尽量copy下来。 5、编写Android项目里面的Android.mk文件。 在搭建安卓编译环境的时候,大家写了一个Android.mk。这个相当于把所有库的Android.mk做了一个汇总。 这个Android.mk位于gameclient01/proj.android/jni下。打开后,拉到尾部: 这个尾部的内容原本是这样的:
请大家修改成这样: 红色部分是修改的地方。 第一个红圈增加了一些路径依赖。只要大家以下两个文件是这么放的,路径就不会有错,就不用纠结于多少个../,当然,大家也可以直接写上绝对路径。 iconv文件夹位置: cocos2d-x-2.0.4-1/iconv 安卓环境汇总的 Android.mk: cocos2d-x-2.0.4-1/gameclient01/proj.android/jni/Android.mk 第二个红圈增加了一个iconv_static,这个是在iconv/Android.mk中命名的。 第三个红圈中的iconv其实就是我们下载的iconv库的文件夹名字。 6、到此,配置就结束了。大家可以使用cygwin编译看看:
7、在项目中使用: 写两个函数: Convert(...), GBKToUTF8(...); 头文件:IconvString.h
源文件:IconvString.cpp
如果有遇到转码后少了一个字的,一定注意strncpy这一步。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |