Unicode:如何将Jansson(JSON库)与ICU特殊的UTF-8数据类型集成?

时间:2013-07-17 23:23:59

标签: c json unicode utf-8 icu

我一直在开发一个需要大量UTF-8字符的C应用程序,所以我开始使用ICU库来支持Unicode字符,但似乎事情与其他库不兼容(主要是,jansson,一个JSON库)。

尽管jansson声称它完全支持UTF-8,但它只期望chars作为参数(IIRC,单个字节对于Unicode字符是不够的),而ICU使用一种称为{{1}的特殊类型(16字节大小的字符,至少在我的系统上)。

将Unicode字符转换为常规字符似乎不是我的解决方案,因为将较大的数据转换为较小的数据会导致数据丢失。无论如何我试过了铸造;它不起作用。

所以我的问题是:如何让这两个库很好地协同工作?

1 个答案:

答案 0 :(得分:1)

使用toUTF8 / toUTF8String让ICU以UTF-8生成输出。 (toUTF8String为您提供std::string .c_str()以获得Jansson想要的char*