您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Cocos2d-x 对于中文的支持-----iconv库

2024/3/1 23:17:52发布19次查看
http://momowing.diandian.com/post/2013-01-16/40047183777 jetion: 我们在win32下创建类的时候,文件都是默认的ansi的式,如果你使用了中文,那么你在win32下就会看到乱码。当然,移植android的时候,你把文件式改为utf-8即可。 但是为了方便win32下的调试
http://momowing.diandian.com/post/2013-01-16/40047183777
jetion:
我们在win32下创建类的时候,文件都是默认的ansi的格式,如果你使用了中文,那么你在win32下就会看到乱码。当然,移植android的时候,你把文件格式改为utf-8即可。
但是为了方便win32下的调试,也为了省事点,我们需要一种方法能直接在win32和android下显示中文的,这时候我们就需要用到iconv库的,cocos2d-x自带第三方库iconv。
在需要用到的地方,我们只要这么声明就可以:
1
2
#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的添加代码,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
local_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/include
local_whole_static_libraries := iconv cocos2dx_static cocosdenshion_static cocos_extension_static
include $(build_shared_library)
$(call import-module,cocosdenshion/android) \
$(call import-module,cocos2dx) \
$(call import-module,extensions) \
$(call import-module,iconv)
最后:给出转换为utf-8的格式的代码,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
intdatacontroller::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: 链接无法直接点击下载的话,请使用右键->迅雷下载
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product