特殊表情符号在设备中无法正确显示

时间:2016-07-28 09:03:02

标签: ios emoji

我在UILabel中使用unicode(“\ uE43B”),奇怪的是它在模拟器中工作但在真实设备中不起作用。代码如下:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height)];
[self.view addSubview:label];
label.text = @"The emoji is:\uE43B";
label.textAlignment = NSTextAlignmentCenter;

结果在模拟器中运行:

enter image description here

当我在我的设备(iPhone6 9.3.2)中运行它时,它会显示一个矩形字符。

enter image description here

我在Google上搜索\uE43Bthis site说:

  

这是一个私人使用代码点。也就是说,故意不将其分配给任何角色。它在版本1.1中添加到Unicode,属于块专用区。

但我仍然不明白模拟器是如何工作的,像微信这样的应用也可以显示表情符号。

1 个答案:

答案 0 :(得分:1)

您可能在Mac上使用自己未在iPhone上使用的自定义字体。如您所知,这不是一个正确的Unicode代码点。它是一个私人使用的角色。如果需要,可以将这些代码点添加到字体中。

iOS模拟器只是一个Mac应用程序,包含与Mac兼容的UIKit版本。即使它们在iOS设备上不可用,您的Mac上可用的内容也可供模拟器使用。

您引用的特定字符为U+1F38F (CARP STREAMER)。 我不知道为什么你把它映射到U + E43B。你可能有一个亚洲字体,它将此作为遗留代码点(私人使用字符的常见用途)。