Unicode和Android NDK

4
有没有办法在NDK中使用UTF-8/16字符串而不需要包含像ICU这样的几兆字节的库?Android中是否内置了ICU?

1
ICU被用于Android,但我不知道是否有任何方法可以访问它。那将是不错的。我正在使用自己编写的代码在NDK中进行UTF8的编码和解码。 - Salw
我认为libiconv是一个可能的替代方案,如果您认为其许可证合适的话。 - jww
4个回答

4

std::string 能够直接存储 UTF-8。只有在需要以某种方式解析字符串时,才需要使用特殊的库,例如 ICU。对于简单的输出而言,只需使用 std::string ,不需要考虑那些库。


这是一个很好的观点,加一。但我不禁感到他想要做些什么,而不是在能够处理它们的系统之间传递它们。 - jww

3

如果您选择默认构建,包括所有这些,数百个代码页和数百个区域设置的数据,则 ICU 只有多兆字节大小。

请查看"使 ICU 更小"。我刚刚添加了一个关于使用静态构建的注释。

希望对您有所帮助。


感谢您修复链接。如果有人在跟进,ICU 49将根据使用的函数大大改善静态构建的支持。 - Steven R. Loomis

0

替代库:Iconv

大小:约900kb(在APK中更小)


0
如果您需要比 ICU 更小的东西,请查看 UTF8-CPP 库

这会给我的项目增加多少额外开销(大小)? ICU 大约有 9MB,这太大了。 - Baruch
我刚刚查看了它。它不能满足我的需求。它不能在代码页和UTF之间进行转换。 - Baruch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接