2011-09-05 96 views
4

有沒有任何方法可以在NDK中使用UTF-8/16字符串,而不包括ICU等多字節庫? ICU是否內置於Android?Unicode和Android NDK

+1

ICU採用的是Android使用的,但我不知道是否有任何的方式來訪問它。這將是很好的。我使用自己的代碼來編碼和解碼NDK中的UTF8。 – Salw

+0

我認爲['libiconv'](https://www.gnu.org/software/libiconv/)是一種可能的替代方案,如果您發現許可協議。 – jww

回答

3

如果使用默認版本(包括all this),數百個代碼頁和數百個區域設置的數據,ICU僅爲幾兆字節。

看一看"Making ICU Smaller"。我剛剛添加了關於使用靜態構建的說明。

HTH

+0

感謝您修復鏈接。如果有人跟隨,ICU 49將根據所使用的功能大大改進對靜態構建的支持。 –

0

如果您想要比ICU更小的東西,請檢查UTF8-CPP library

+0

這會添加到我的項目中多少開銷(大小)? ICU約爲9MB,這只是太多了。 – baruch

+0

我剛查過它。它沒有做我需要的任何事情。它不會在代碼頁和UTF之間進行轉換。 – baruch

4

std::string能夠存儲UTF-8直接的。只有在想要以某種方式解析字符串時,您才需要特殊的庫,如ICU。對於沒有解析的簡單輸出,只需使用std::string並忘記所有這些庫。

+0

這是一個很好的觀點+1。但我不禁感到他想對他們做些什麼,而不是在可以處理它們的系統之間傳遞它們。 – jww

0

替代的lib:Iconv

尺寸:約900KB(這是APK較小)