Why can't Emoji display correctly in a UITextF

2019-02-07 07:12发布

When an Emoji character is set using the code below:

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

It just display as a square. But when I input an Emoji from the keyboard it displays correctly. What's the problem?

PS: I'm using IOS 5.1

Text View with Emoji Characters

1条回答
Explosion°爆炸
2楼-- · 2019-02-07 07:51

In older versions of iOS the Emoji characters were all in the Unicode Private Use Area, which as the name suggests is a set of Unicode code points that explicitly don't have any associated characters. However, the Unicode standard has been updated to include a large number of Emoji characters, so iOS now uses these ones, as does Mac OS X.

You can see a list of all the Unicode Emoji in the code charts at www.unicode.org/charts e.g. http://www.unicode.org/charts/PDF/U1F600.pdf and these also tell you what each Emoji is actually meant to represent.

None of the Unicode Emoji are in the Basic Multilingual Plane of the Unicode spec, which means that they're all too big to fit in a single iOS unichar. So when they're stored in an NSString each emoji will cover multiple unichars — something to be aware of if you try to iterate over the characters in a string.

If you have code like

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

You'll see this in the output

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

where the single

查看更多
登录 后发表回答