Невозможно отобразить китайские символы в приложении IOS

0

Я получаю доступ к следующему JSON из веб-сервиса.

{"food":[{"mid":"1","name":" 首发"},{"mid":"2","name":"汤"},{"mid":"3","name":"沙拉"},{"mid":"4","name":"比萨"},{"mid":"5","name":"甜点"}]} 

Но он отображает некоторые цифры в приложении, а не фактические китайские символы.

Проверьте мой код; что-то не так с ним?

NSString *post =[[NSString alloc] initWithFormat:@"action=%@&appId=%@&langId=%@",@"menu",appId,langId];
NSURL *url=[NSURL URLWithString:BaseURL];

NSLog(@"getMenu post : %@",post);
// Convert NSString to NSData format

NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]];
// Create the URL Request and set the neccesary parameters

request = [[NSMutableURLRequest alloc] init];
[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
//[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUnicodeStringEncoding];

NSLog(@"getMenu responce=%@",returnString);

if ([returnString isEqualToString:@""])
{
    return nil;
}
else
{

NSError *e;

NSDictionary *dataDict = [NSJSONSerialization JSONObjectWithData: returnData options:NSJSONReadingMutableContainers error: &e];;

return dataDict;

}
  • 0
    Какую кодировку получают данные, которые вы получаете?
  • 0
    Спасибо, я использую параметры сортировки utf8_unicode_ci в БД
Теги:

1 ответ

1

установить еще одно свойство для объекта NSMutableURLRequest в конце

[request setResponseEncoding:NSUTF8StringEncoding];

Обновите свой код:

NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUnicodeStringEncoding];

к

NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

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

  • 0
    Благодаря Mrunal я попробовал это с кодом [запрос setResponseEncoding: NSUTF8StringEncoding]; но он выдает следующую ошибку No visible @interface для 'NSMutableURLRequest' объявляет селектор setResponseEncoding:
  • 0
    Обновил мой ответ
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню