NSJSONSerialization и Unicode, не будут хорошо играть вместе - PullRequest
6 голосов
/ 16 ноября 2011

Я создаю приложение, которое взаимодействует с nodejs-сервером с использованием сокетов и JSON, и, поскольку iOS 5 имеет свою собственную NSJSONSerialization, я подумал, что это может быть путь для подражания. Раньше я использовал легкую библиотеку Yail.

В любом случае, после перехода на NSJSONSerialization я начал сталкиваться с проблемой с кодировкой, перед изменением символ Ö отправлял бы на сервер и обратно, все еще будучи Ö, но теперь NSJSONSerialization оставляет Ö все еще в кодировке Unicode, т.е. \U00f6.

При чтении документации говорится, что объекты JSON по умолчанию конвертируются в UTF8. И когда я преобразовываю ответ от сервера в простую строку NSString, Ö отображается так же, как и ожидалось, но, конечно, все еще в JSON.

Пожалуйста, помогите мне с вашими мыслями и так, я должен вернуться в тюрьму или использовать встроенную NSJSONSerialization?

Спасибо, Simon

Ответы [ 2 ]

3 голосов
/ 17 апреля 2013

NSLog вызывает описание своих аргументов, которые печатают код Unicode вместо самого символа. Попробуйте, например:

NSLog(@"%@", [NSDictionary dictionaryWithObject:@"ö" forKey:@"hello"]);

И вы увидите, что он печатает

{
    hello = "\U00f6";
}

Таким образом, есть вероятность, что ваше JSON-декодирование выполнено нормально.

0 голосов
/ 17 апреля 2013

JSONSerialization можно использовать только с определенными типами: NSString, NSNumber, NSArray, NSDictionary или NSNull только по умолчанию ... если вам нужно использовать другие объекты в вашем JSON, я рекомендую использовать https://github.com/johnezang/JSONKit

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