为什么Emoji无法在UITextField中正确显示?

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

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

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

PS:我正在使用IOS 5.1

与表情符号字符的文本视图

在较早的iOS版本中,表情符号字符全部位于Unicode专用区域,顾名思义,它是一组明确没有任何关联字符的Unicode代码点。 但是,Unicode标准已更新为包含大量表情符号字符,因此iOS现在使用这些字符,就像Mac OS X.

您可以在www.unicode.org/charts的代码表中看到所有Unicode表情符号列表,例如http://www.unicode.org/charts/PDF/U1F600.pdf ,这些表格还会告诉您每个表情符号是什么意味着代表。

Unicode规范中没有任何Unicode表情符号在Unicode规范的基本多语言平面中,这意味着它们太大而不适合单个iOS unichar。 所以当它们被存储在一个NSString中时,每个表情符号将会覆盖多个unichars – 如果你尝试遍历一个string中的字符,需要注意一些。

如果你有类似的代码

 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 

那里的单曲“SMILING FACE WITH OPEN MOUTH AND SMILING EYES”表情符号是两个单独的长,而不是我们所期望的。