2016-07-28 144 views
2

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

我有谷歌搜索\uE43Bthis site说:

这是一个私用码点。也就是说,它故意没有分配给任何角色。它在版本1.1中添加到Unicode中,属于块私密使用区域。

但我还是不明白模拟器是怎么工作的,有些应用如微信也可以显示表情符号。

+0

此问题仅适用于\ uE438? – David

+0

我不这么认为。 – KudoCC

回答

1

您可能正在使用不使用你的iPhone Mac上的自定义字体。如您所知,这不是一个适当的Unicode代码点。这是一个私人使用的角色。这些代码点可以添加到字体,如果他们的愿望。

的iPhone模拟器只是一台Mac应用程序,包括UIKit中的Mac兼容的版本。即使在iOS设备上不可用,您的Mac上可用的东西也可供Simulator使用。

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

+0

谢谢,它适用于'label.text = @“表情符号是:\ U0001f38f”;'。我很想知道你是如何快速找到U + 1F38F的,这个错误的unicode和a。 – KudoCC

+0

此搜索:http://emojipedia.org/search/?q=fish –

+0

非常感谢! – KudoCC

相关问题