Определенные символы, вызывающие сбой в приложении для веб-служб iPhone с использованием PHP MySQL и XML - PullRequest
0 голосов
/ 24 марта 2012

У нас есть приложение iPhone для веб-сервисов, в котором содержимое с сервера считывается из таблицы MySQL (тип: MyISAM; сопоставление: latin1_swedish_ci) и затем отправляется через PHP через XML.

Все работало нормально до вчерашнего дня, нам нужно было поддерживать символ..

В строке XML в нашем PHP мы изменили

$xml_output = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";

на $xml_output = "<?xml version=\"1.0\"?>\n";

И вуаля, вместе с этим персонажем, приложение начало поддерживать язык Emoji & International!

Но проблема в том, что ... теперь, когда контент содержит определенные символы, приложение вылетает, и мы не можемобнаружите эти символы.

Например: если в поле MySQL есть эта строка 'ser¤ðŸ'˜ðŸ'UserFoo🌹⠙', приложение вылетает.Странные символы в этом примере, предположительно, являются некоторыми символами эмодзи.

Я считаю, что это некоторая проблема, связанная с кодированием, но я понятия не имею, как ее правильно настроить - от вставки в таблицу с использованием PHP и последующей выборки через XML.

Как настроить весь процесс?Кроме того, было бы замечательно, если бы вы могли указать на какой-то ресурс для начинающих, который описывает все это с поддержкой смайликов.

PS: я прочитал этот вопрос и последовал предложению, но не смогпока не могу исправить.

Ответы [ 2 ]

0 голосов
/ 02 мая 2012

Вы также должны знать, что большинство символов эмодзи кодируются с использованием 4-байтовой кодовой точки UTF8, которая не может быть сохранена в MySQL, если вы не обновитесь до версии 5.5 и не преобразуете свои таблицы в набор символов utf8mb4.

Ссылка: Как вставить символ utf-8 mb4 (эмодзи в ios5) в mysql?

Я предполагаю, что ваше приложение падает, потому что анализатор XML обнаружил недопустимый символ. Недопустимый символ, вероятно, закрался из-за преобразований кодировки, которые вы делаете. Если вы преобразуете все данные на стороне сервера в UTF8, это, вероятно, решит проблему, но если вы примете пользовательский ввод, вам также потребуется санировать ввод, чтобы убедиться, что он действителен в UTF8.

0 голосов
/ 24 марта 2012

Я думаю, что вам следует сначала попробовать изменить кодировку вашей БД и таблицы на "utf8_general_ci".

Затем вы должны запустить SET NAMES 'utf8' на вашем соединении MySQL. Это важно, чтобы все общение с клиентами происходило в Unicode.

А затем, когда вы пишете свой XML, установите <?xml version="1.0" encoding="UTF-8"?>

Если ничего из вышеперечисленного не работает, я предлагаю вам также проверить код и настройки iPhone, чтобы убедиться, что специальные символы поддерживаются.

Надеюсь, это поможет!

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