将表情符号字符串转换为icu :: UnicodeString

问题描述 投票:0回答:1

我有一个方法读取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()

c++ std icu
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.