我一直在开发一个需要大量UTF-8字符的C应用程序,所以我开始使用ICU库来支持Unicode字符,但似乎事情与其他库不兼容(主要是,jansson,一个JSON库)。
尽管jansson声称它完全支持UTF-8,但它只期望chars作为参数(IIRC,单个字节对于Unicode字符是不够的),而ICU使用一种称为{{1}的特殊类型(16字节大小的字符,至少在我的系统上)。
将Unicode字符转换为常规字符似乎不是我的解决方案,因为将较大的数据转换为较小的数据会导致数据丢失。无论如何我试过了铸造;它不起作用。
所以我的问题是:如何让这两个库很好地协同工作?
答案 0 :(得分:1)
使用toUTF8
/ toUTF8String
让ICU以UTF-8生成输出。 (toUTF8String为您提供std::string
.c_str()
以获得Jansson想要的char*
。