我有一个方法读取json文件并返回一个const char*
,它可以是任何文本,包括表情符号。我无权使用此方法。
例如,我用英国国旗the({message: "\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67\uDB40\uDC7F"}
)创建了一个json文件。
[当我调用该方法时,它返回类似于í ¼í¿´í€í±§í€í±¢í€í±¥í€í±®í€í±§í€í±¿
的内容,但是为了正确使用它,我需要将其转换为icu :: UnicodeString,因为我使用了期望的另一种方法(再次为封闭源)。
我发现使它起作用的唯一方法是:
icu::UnicodeString unicode;
unicode.setTo((UChar*)convertMessage().data());
std::string messageAsString;
unicode.toUTF8String(messageAsString);
在此之后,messageAsString可用并且一切正常。
convertMessage()
是使用std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t>::from_bytes(str)
的方法。
我的问题是,有没有一种方法可以在不使用额外的icu::UnicodeString
调用的情况下创建convertMessage()
?