2014-01-16 62 views
0

我需要將UTF-16字符串轉換爲UTF-8字符串。將JNI UTF-16字符串轉換爲標準C++ UTF-8字符串

const unsigned short *utf16string = ...; 
const char *utf8string = convertUTF16toUTF8(utf16string); 

任何人都可以幫我找/寫功能const char* convertUTF16toUTF8(const unsigned short* utf16string)

不幸的是,類型無法更改,我無法訪問C++ 11。我一直在這個頭上打了幾個小時,並找不到任何解決方案。

請幫幫我。我相信你,StackOverflow!

P.S.如果有人需要知道,我正在使用cocos2d-x做一個遊戲,我試圖用JNI回調來獲取一個字符串。 JNI有GetString...函數的UTF版本,但根據我自己的經驗和Wikipedia,這些都是錯誤的,所以我需要使用原始函數來轉換字符串。

+0

你在什麼環境?操作系統中可能已經有一個功能。但除此之外,我只需從UTF-16字符串中一次讀取一個代碼點(可能超過兩條短語),然後將其寫爲UTF-8字符,然後重複。要提前分配緩衝區,你可能會猜到它的大小與UTF-16相同或更短,然後在達到限制時重新分配。 – Rup

+0

此代碼正在Android上使用。 –

+0

正如我在問題中提到的,我無法訪問它:( –

回答

2

如果您想要一個簡單而小巧的C++庫,您可以使用UTF8-CPP在UTF-8和UTF-16之間進行轉換。