我注意到我的应用程序中的表情符号已停止在iOS 5中的UIWebView上正常显示.
所有字符在显示时都会编码为HTML,输出HTML为:
<p>Emoji (iOS 4): ��</p>
Run Code Online (Sandbox Code Playgroud)
这个UTF-8编码的HTML在iOS 4中的UIWebView中正确呈现,但不在5中:

我知道iOS 5中有一些关于表情符号的变化,但表情符号字符已被编码为 在iOS 5上生成,因此2字节字符应该是正确的.代码没有发生任何其他变化,所以它肯定是iOS 5引入的.
任何建议都将非常感谢,如果需要,我很乐意提供更多信息.谢谢.
Mic*_*all 10
iOS 5和Safari 5.1中的HTML解析器已更改,0xD800..0xDFFF(55296..57343)范围内的字符引用被视为解析错误并生成对象替换字符(通常呈现为带有问题的菱形)标记).这种行为改变与HTML5指定的一致.这意味着您不能再使用代理项对字符引用对字符进行编码.
一个相对简单的解决方案是使用单个字符引用而不是代理对.在您的示例中,使用0x1F612而不是(0xD83D,0xDE12).您可以使用十六进制或十进制:
😒 或😒
这解释了问题的原因.然而,我通过仅编码较小的字符子集来处理该问题,因为HTML文档是unicode.
| 归档时间: |
|
| 查看次数: |
2018 次 |
| 最近记录: |