Emoji и UIWebView в iOS 5 - PullRequest
       3

Emoji и UIWebView в iOS 5

5 голосов
/ 01 ноября 2011

Я заметил, что смайлики в моем приложении перестали правильно отображаться в UIWebView в iOS 5.

Все символы кодируются для HTML, когда они отображаются и выводится HTML:

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

Этот код в кодировке UTF-8 правильно отображается в UIWebView в iOS 4, но не в 5:

enter image description here

Я понимаю, что в iOS 5 произошли некоторые изменения в отношении emoji, но символ emoji, который был закодирован в ?, был сгенерирован в iOS 5, поэтому 2-байтовые символы должны быть правильными. Никаких других изменений в коде не произошло, так что это определенно что-то введенное в iOS 5.

Любой совет будет высоко оценен, и я с радостью предоставлю больше информации, если потребуется. Спасибо.

1 Ответ

10 голосов
/ 27 ноября 2011

Я получил ответ с форумов разработчиков :

HTML-анализатор в iOS 5 и Safari 5.1 изменился, а ссылки на символы в диапазоне 0xD800..0xDFFF (55296..57343) рассматриваются как ошибки синтаксического анализа и создают символ замены объекта (который обычно отображается как ромб). с вопросительным знаком). Это изменение в поведении согласуется с тем, что указывает HTML5. Это означает, что вы больше не можете кодировать символы, используя ссылки на символы суррогатной пары.

Относительно простое решение - использовать односимвольную ссылку вместо суррогатной пары. В вашем примере вместо (0xD83D, 0xDE12) используйте 0x1F612. Вы можете использовать либо шестнадцатеричный или десятичный:

& # x1f612; или 101

Это объясняет причину проблемы. Однако я обошел эту проблему, кодируя только меньшее подмножество символов, поскольку HTML-документ находится в юникоде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...