【问题标题】:Emoji iCons are not displaying correctly when read from plist从 plist 读取时,表情符号图标无法正确显示
【发布时间】:2023-04-09 17:40:01
【问题描述】:

我正在尝试从 plist 文件中读取一些文本并在警告框中将其显示给用户。

当我使用此代码构建字符串时,一切正常(用户看到带有笑脸图标的 Hello):

NSString *hello = @"Hello \ue415";

但是当我从 plist 获取字符串时,使用此代码,使用会看到“Hello \ue415”:

NString *hello =  (NSString *)[pageLiteratureDic objectForKey:litratureKey];

我必须对字符串进行不同的编码吗?任何帮助或指点将不胜感激......每个人都喜欢emojis ;)

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    您不应该在 plist 文件中直接键入“\ue415”作为文本。 \u.... 是 C 语言中字符串和字符语法中的一个转义序列。字符串本身不包含反斜杠和“u”,它只包含 1 个字符,即代码点 0xe415 处的 Unicode 字符。如果要将其保存在 plist 中,则必须自己手动在其中键入一个 Unicode 字符,确保使用 plist 所需的任何编码(可能是 utf-8 或 utf-16,不确定)。或者,您可以编写一个程序,从该字符串创建一个 plist,然后将该 plist 文件中的任何内容复制并粘贴到您的文件中。

    【讨论】:

      【解决方案2】:

      在 plist 中,尝试使用“Hello :)”中明确的笑脸字符来代替“Hello \ue415”。只需将笑脸字符剪切并粘贴到 unicode 代码上即可。 plist 的读取可能是转义反斜杠并停止解释为 unicode 字符。

      【讨论】:

      • 我不这么认为,我可以将 Hello \ue415 打印到 NSLog...还注意到当我剪切和粘贴笑脸字符时没有任何反应:(
      • 当您将笑脸粘贴到 plist 文件中并读取它时,您是得到一个空字符串还是再次看到 \ue415 字符?
      • 这是我最终使用的。我将表情符号从邮件应用程序通过电子邮件发送到我的 Mac 上的 gmail,然后复制并粘贴到 plist 中。然后可以像对待任何其他 nsstring 一样对待它们,而无需特殊的 unicode 格式。
      猜你喜欢
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      相关资源
      最近更新 更多