真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

cocos2d-x學(xué)習(xí)筆記(八)使用NDK自帶的iconv進(jìn)行編碼轉(zhuǎn)換-創(chuàng)新互聯(lián)

    cocos2d-x顯示中文亂碼最常用的解決方式主要有xml文件讀取、使用iconv庫。由于在使用iconv庫出現(xiàn)了比較多的問題,這里作個(gè)總結(jié),給后來人少走一些彎路。

在海寧等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需開發(fā)網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,成都全網(wǎng)營銷,成都外貿(mào)網(wǎng)站制作,海寧網(wǎng)站建設(shè)費(fèi)用合理。

    我用的是cocos2d-x 3.4的版本,我也是參照網(wǎng)上的教程,但可能一些細(xì)節(jié)教程里面沒有提到,這里就詳細(xì)列出來。

  1、在cocos2d-x端新建一個(gè)ChineseString.h文件

代碼如下:

#ifndef __ChineseString_H__ #define __ChineseString_H__ #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) #include "../../../software/android-ndk-r10e/sources/android/support/include/iconv.h" #endif #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) #include "external/win32-specific/icon/include/iconv.h" #endif #include  #pragma comment(lib, "libiconv.lib") static char g_GBKConvUTF8Buf[5000] = {0}; class ChineseString { public: static const char* GBKToUTF8(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 * 4; size_t copyLength = outLength; memset(g_GBKConvUTF8Buf, 0, 5000); char* outbuf = (char*)malloc(outLength); char* pBuff = outbuf; memset(outbuf, 0, 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

    2、Android端

    網(wǎng)上有一種方法要自己下載iconv庫,我覺得那種方法挺麻煩的,而且我自己跟著步驟試了下,沒有成功,后面放棄了,最后又找了一種方法,也就是下面要介紹的用NDK自帶的iconv庫。

    我用的是android-ndk-r10e,可以發(fā)現(xiàn)有個(gè)iconv.h文件,也就是上面cocos2d-x端代碼里引用的路徑

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) #include "../../../software/android-ndk-r10e/sources/android/support/include/iconv.h" #endif

這個(gè)根據(jù)自己ndk存放的路徑做調(diào)整。

然后修改proj.android/jni目錄下的Android.mk文件

主要加了

LOCAL_STATIC_LIBRARIES += android_support$(call import-module, android/support)

在相應(yīng)的地方加入這兩段代碼

cocos2d-x學(xué)習(xí)筆記(八)使用NDK自帶的iconv進(jìn)行編碼轉(zhuǎn)換

做了以上這些步驟,正常情況下是可以通過了。

注意以下幾點(diǎn):

1、android編譯碰到如下錯(cuò)誤

invalid conversion from 'const char**' to 'char**' 

這是由于我們定義GBKToUTF8這個(gè)函數(shù)時(shí),參數(shù)使用const char* strChar,然后傳入iconv函數(shù)時(shí)ndk的iconv.h定義的是size_t  iconv(iconv_t, char**, size_t*, char**, size_t*); 所以只需要把const去掉就ok了。

2、網(wǎng)上有介紹說ndk r9的iconv.h代碼有問題,需要修改如下,大家注意一下就行,r10是沒有這個(gè)問題

//將#ifdef __cplus_plus   //改為   #ifdef __cplusplus   }  // extern "C"   #endif

 

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)站標(biāo)題:cocos2d-x學(xué)習(xí)筆記(八)使用NDK自帶的iconv進(jìn)行編碼轉(zhuǎn)換-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://weahome.cn/article/dhdsio.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部