我注意到,我的应用程序中的表情符号在iOS 5的UIWebView上无法正常显示。
所有字符在显示时都会针对HTML进行编码,并且输出HTML为:
<p>Emoji (iOS 4): ��</p>这个UTF-8编码的超文本标记语言可以在iOS 4的UIWebView中正确呈现,但在5:

我知道iOS 5在表情符号方面有一些变化,但编码到��中的表情符号是在iOS 5上生成的,所以2个字节的字符应该是正确的。代码没有发生其他变化,所以肯定是在iOS 5中引入的。
任何建议都将不胜感激,如果需要,我将很乐意提供更多的信息。谢谢。
发布于 2011-11-27 20:01:36
我有一台response from the developer forums
iOS 5和Safari5.1中的超文本标记语言解析器已更改,0xD800..0xDFFF (55296..57343)范围内的字符引用被视为解析错误并生成对象替换字符(通常呈现为带问号的菱形)。这种行为上的变化与HTML5所指定的一致。这意味着您不能再使用代理项对字符引用对字符进行编码。
一种相对简单的解决方案是使用单个字符引用而不是代理项对。在您的示例中,使用0x1F612而不是(0xD83D,0xDE12)。您可以使用十六进制或十进制:
😒或😒
这就解释了问题的原因。但是,我解决了这个问题,只编码了较小的字符子集,因为HTML文档是用unicode编码的。
https://stackoverflow.com/questions/7966922
复制相似问题