5

当使用以下代码设置表情符号字符时:

self.textField.text = @"\ue415";

它只是显示为一个正方形。但是当我从键盘输入表情符号时,它会正确显示。有什么问题?

PS:我使用的是IOS 5.1

带有表情符号字符的文本视图

4

1 回答 1

2

在旧版本的 iOS 中,Emoji 字符都在 Unicode Private Use Area 中,顾名思义,这是一组明确没有任何关联字符的 Unicode 代码点。但是,Unicode 标准已经更新为包含大量表情符号字符,因此 iOS 现在使用这些字符,Mac OS X 也是如此。

您可以在 www.unicode.org/charts 的代码图表中查看所有 Unicode 表情符号的列表,例如http://www.unicode.org/charts/PDF/U1F600.pdf,这些还告诉您每个表情符号实际上是什么代表的意思。

Unicode 表情符号都不在 Unicode 规范的基本多语言平面中,这意味着它们太大而无法放入单个 iOS unichar 中。因此,当它们存储在 NSString 中时,每个 emoji 将覆盖多个 unichars——如果您尝试迭代字符串中的字符,请注意这一点。

如果你有类似的代码

NSString *emoji =@"\U0001F604";
NSString *ascii = @"A";
NSLog(@"emoji.length %d, ascii.length %d", emoji.length, ascii.length);

你会在输出中看到这个

2013-03-08 14:42:22.841 test[23980:c07] emoji.length 2, ascii.length 1

其中一张张开嘴和微笑眼睛的微笑脸表情符号是两个 unichars 长,而不是我们预期的一个。

于 2013-03-08T14:44:57.450 回答