iOS: декодировать строку utf8 - PullRequest
0 голосов
/ 15 марта 2012

Я получаю данные json с сервера с некоторыми строками внутри.Я использую SBJson https://github.com/stig/json-framework, чтобы получить их.

Однако, когда я вывожу некоторые строки в UILabel, они выглядят так: \u0418\u043b\u044c\u044f\u0411\u043b\u043e\u0445 (это символы кириллицы)

И все в порядке с латинскими символами

Как я могу декодировать его в обычные символы?

Некоторый код о получении данных:

   NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];   
   NSString *stringData = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
   NSDictionary *object = [parser objectWithString:stringData error:nil];
   NSString *comments = [NSString stringWithFormat:@"%@",[object valueForKey:@"comments"]];

Строка комментарии имеет особый формат, поэтому я выполняю некоторые операции, такие как stringByTrimmingCharactersInSet,

stringByReplacingOccurrencesOfString,

NSArray* json_fields = [comments_modified componentsSeparatedByString: @";"];

, чтобы получить окончательные данные.

Это пример полученных данных после некоторой обрезки / замены (это NSString* comments):

"already_wow"=0;"date_created"="2012/03/1411:11:18";id=41598;name="\U0418\U043b\U044c\U044f\U0411\U043b\U043e\U0445";text="\U0438\U043d\U0442\U0435\U0440\U0435\U0441\U043d\U043e";"user_id"=1107;"user_image"="user_image/a6/6f/96/21/20111220234109510840_1107.jpg";"user_is_deleted"=0;username=IlyaBlokh;"wow_count"=0;

Вы видите, что поля text и name закодированы

Если я отображаю их на виде (например, на UILabel), они все равно выглядят одинаково

1 Ответ

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

возможно, возвращаемая строка - это просто строковое представление в юникоде (строка ascii), это означает, что не возвращено содержимое, закодированное с помощью utf8, чтобы попытаться сделать это с NSASCIIStringEncoding, чтобы получить stringData

...