2011-09-05 78 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较小)