将表情符号unicode从cpp核心级别传递到iosui级别

pass emoji unicode from cpp core-level to ios ui level

本文关键字:级别 iosui 核心 符号 unicode cpp      更新时间:2023-10-16

在c++级别中,我想将类似":smile:"的表情符号字符串更改为ios支持的unicode "u{1f604}"
但是,C++不支持该类型,u必须跟数字。然后我将unicode更改为"\u{1f604}"。现在,它可以很好地在c++级别工作,但当我将此字符串传递到ios级别时,ios不会自动将此字符串更改为表情符号。
你能给我一些想法吗

很抱歉我没有把它描述清楚。
在我的项目中,我在C++级别解析服务器上的json,然后将这些数据传递给IOS级别。

要在C++中转义U+FFFF以上的代码点,必须使用U后跟八个十六进制数字(需要C++11或更高版本)。根据所需的编码,您可以使用以下字符串文字形式之一:

u8"U0001f604"  // UTF-8, type const char[]
u"U0001f604"   // UTF-16, type const char16_t[]
U"U0001f604"   // UTF-32, type const char32_t[]

您可以编写一个NSString类方法,该方法以包含代码点的NSInteger为参数,并返回一个带有包含该代码点的单个Unicode字符的NSString*。

为了实现这一点,如果codePoint是<=0xffff然后将其转换为一个unichar,否则将其转换为由两个unichar组成的数组,一个高代理和一个低代理(谷歌解释)。然后使用现有的NSString方法之一将其转换为NSString。

将代码点转换为高/低代理项:减去0x10000。高代理=0xd800+(代码点>>10);低代理项=0xdc00+(代码点&0x3ff)。

示例:

NSString* smile = [NSString stringWithCodePoint:0x1f604];