【问题标题】:Why can't Emoji display correctly in a UITextField?为什么 Emoji 不能在 UITextField 中正确显示?
【发布时间】:2012-04-13 23:30:26
【问题描述】:

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

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

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

PS:我使用的是 IOS 5.1

【问题讨论】:

标签: iphone ios ios5 emoji


【解决方案1】:

在旧版本的 iOS 中,表情符号字符都位于 Unicode 私人使用区,顾名思义,这是一组明确没有任何关联字符的 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 长,而不是我们想象的一个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 2012-08-31
    相关资源
    最近更新 更多