【问题标题】:Special Emoji doesn't present correctly in device特殊表情符号无法在设备中正确显示
【发布时间】:2016-08-15 11:16:45
【问题描述】:

我在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;

结果在模拟器中运行:

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

我在 Google 上搜索了 \uE43Bthis site 说:

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

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

【问题讨论】:

  • 此问题仅适用于 \uE438 ?

标签: ios emoji


【解决方案1】:

您可能在 Mac 上使用了在 iPhone 上没有使用的自定义字体。正如您所注意到的,这不是一个正确的 Unicode 代码点。这是一个私人使用的字符。如果需要,可以将这些代码点添加到字体中。

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

您引用的特定字符是U+1F38F (CARP STREAMER)。 ? 我不知道你为什么把它映射到 U+E43B。您可能有一种亚洲字体,将其作为旧代码点(私有字符的常见用法)。

【讨论】:

  • 谢谢,它适用于label.text = @"The emoji is:\U0001f38f";。我很想知道你是如何用错误的 unicode 和 ? 这么快找到 U+1F38F 的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
  • 2019-04-22
  • 2020-10-11
  • 1970-01-01
  • 2016-12-21
  • 1970-01-01
  • 2019-01-24
相关资源
最近更新 更多