我一直在开发一个C应用程序,它需要大量的UTF-8字符,所以我开始使用ICU库来支持Unicode字符,但似乎与其他库(主要是JSON库jansson)的工作不太好。
尽管jansson声称它完全支持UTF-8,但它只希望使用字符作为参数(IIRC,单字节不足以使用Unicode字符),而ICU使用一种称为UChar的特殊类型(至少在我的系统上是16字节大小的字符)。
将Unicode字符转换为常规字符似乎不是一个解决方案,因为将较大的数据转换为较小的数据将导致数据丢失。反正我试过选演员,没用。
所以我的问题是:如何使这两个库能够很好地协同工作?

最佳答案

使用toUTF8/toUTF8String使ICU产生UTF-8输出。(toUTF8String给你一个std::string所以.c_str()来得到Jansson想要的char*

07-27 13:34
查看更多