iOS 5中的表情符号和UIWebView

iOS 5中的表情符号和UIWebView,ios,cocoa-touch,Ios,Cocoa Touch,我注意到我的应用程序中的表情符号已经停止在iOS 5的UIWebView上正常显示 所有字符在显示时均为HTML编码,输出HTML为: <p>Emoji (iOS 4): &#55357;&#56850;</p> 表情符号(iOS 4):&55357� 此UTF-8编码的HTML在iOS 4的UIWebView中正确呈现,但在iOS 5中没有: 我知道iOS 5在表情符号方面有一些变化,但是表情符号已经被编码到�ᘵ

我注意到我的应用程序中的表情符号已经停止在iOS 5的UIWebView上正常显示

所有字符在显示时均为HTML编码,输出HTML为:

<p>Emoji (iOS 4): &#55357;&#56850;</p>
表情符号(iOS 4):&55357�

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

我知道iOS 5在表情符号方面有一些变化,但是表情符号已经被编码到�� 是在iOS 5上生成的,因此2字节字符应该是正确的。没有对代码进行其他更改,因此它肯定是iOS5引入的

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

我有一个:

iOS 5和Safari 5.1中的HTML解析器已更改,0xD800..0xDFFF(55296..57343)范围内的字符引用被视为解析错误,并生成对象替换字符(通常呈现为带问号的菱形)。这种行为上的变化与HTML5的规定是一致的。这意味着您不能再使用代理项对字符引用对字符进行编码

一个相对简单的解决方案是使用单个字符引用而不是代理项对。在您的示例中,使用0x1F612代替(0xD83D,0xDE12)。您可以使用十六进制或十进制:

😒;或😒

这就解释了问题的原因。然而,我通过只编码较小的字符子集来解决这个问题,因为HTML文档是unicode格式的