gpt4 book ai didi

ios - iOS 5 中的表情符号和 UIWebView

转载 作者:可可西里 更新时间:2023-11-01 04:23:00 24 4
gpt4 key购买 nike

我注意到我应用中的表情符号在 iOS 5 的 UIWebView 上无法正常显示。

所有字符在显示时都针对 HTML 进行编码,输出 HTML 为:

<p>Emoji (iOS 4): &#55357;&#56850;</p>

此 UTF-8 编码的 HTML 在 iOS 4 的 UIWebView 中正确呈现,但在 5 中不正确:

enter image description here

我知道 iOS 5 在表情符号方面发生了一些变化,但表情符号字符已编码为 ��是在 iOS 5 上生成的,所以 2 个字节的字符应该是正确的。代码没有发生其他更改,因此它绝对是 iOS 5 引入的内容。

如有任何建议,我们将不胜感激,如果需要,我很乐意提供更多信息。谢谢。

最佳答案

我有一个 response from the developer forums :

The HTML parser in iOS 5 and Safari 5.1 has changed, and character references in the range 0xD800..0xDFFF (55296..57343) are treated as parsing errors and produce an object replacement character (which is typically rendered as a diamond with a question mark). This change in behaviour is consistent with what HTML5 specifies. This means that you can no longer encode characters using surrogate pair character references.

A relatively simple solution is to use a single character reference instead of a surrogate pair. In your example, instead of (0xD83D, 0xDE12), use 0x1F612. You can use either hex or decimal:

&#x1f612; or &#128530;

这解释了问题的原因。然而,由于 HTML 文档采用 unicode 格式,我通过仅对较小的字符子集进行编码来解决该问题。

关于ios - iOS 5 中的表情符号和 UIWebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7966922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com