IOS JSON без специальных символов - PullRequest
1 голос
/ 02 апреля 2012

Я работаю в IOS и пытаюсь передать некоторый контент на веб-сервер через NSURLRequest. На сервере у меня есть сценарий PHP, который принимает строку запроса и преобразует ее в объект JSON с использованием инфраструктуры Zend_JSON. Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда символ «ø» находится в любой части параметров запроса, строка запроса обрывается на один символ.

Запросить строку перед отправкой на сервер.

[{"description":"Blah blah","type":"Russebuss","name":"Roscoe Simulator","appVersion":"1.0.20","osVersion":"IOS 5.1","phone":"5555555","country":"Østfold","udid":"bed164974ea0d436a43f3cdee0e005a1"}]

Запросить строку на сервере перед любым анализом

[{"description":"Blah blah","type":"Russebuss","name":"Roscoe Simulator","appVersion":"1.0.20","osVersion":"IOS 5.1","phone":"5555555","country":"Nord-Trøndelag","udid":"bed164974ea0d436a43f3cdee0e005a1"}

Все выглядит точно так же, за исключением последнего закрытия ] отсутствует. Я думаю, что это проблема при преобразовании строки в UTF-8, но я не уверен, что это правильный способ исправить эту проблему.

У кого-нибудь есть идеи, почему это происходит?

Ответы [ 2 ]

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

в первую очередь не доверяйте консоли xcode в таких случаях.Вы никогда не знаете, какое кодирование консоль фактически использует.

секунда, избегайте недопустимых символов перед тем, как создать строку json.Проще всего было бы убедиться, что вы все время используете одно и то же представление Unicode, например utf-8.

в-третьих, если все еще есть недопустимые символы, используйте библиотеку json с парсером (выполняет кодировку).проверить вывод, проанализировав, например, NSString.или проверьте вывод вручную, используя веб-форму, такую ​​как http://jsonformatter.curiousconcept.com/

. Самый простой способ - заменить отдельные символы в строке, построить свой JSON и преобразовать обратно.Одним из способов сделать это может быть замена, например, немецкого ä с его представлением в юникоде U + 00E4 (http://www.utf8 -chartable.de /).

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

0 голосов
/ 02 апреля 2012

Пожалуйста, попробуйте использовать внутреннюю json кодировку Zends:

Zend_Json::$useBuiltinEncoderDecoder = true;

должно решить вашу проблему.

...