NSData в NSString с åöä

Я загружаю веб-страницу с помощью NSMutableURLRequest, но у меня возникают проблемы с помещением этой самой веб-страницы в NSString.

NSString *username = @"my_username";

NSString *password = @"my_password";

NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"https://www.mypage.com/login.php?username=%@&password=%@", username, password]];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

NSString *returnPage = [NSString stringWithFormat:@"%.*s", [returnData length], [returnData bytes]];

Это работает нормально, за исключением специальных символов, таких как åäö и т. д. Есть ли лучший способ?


person user872661    schedule 09.12.2011    source источник


Ответы (1)


Да, используйте следующее:

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

Это использует UTF8 вместо ASCII.

person Richard J. Ross III    schedule 09.12.2011
comment
Хм, Xcode (4.2) говорит мне, что ARC запрещает явное сообщение об «авторелизе», должен ли я просто оставить авторелиз и скрестить пальцы? :) Я не так привык к ARC, ObjC или Xcode... - person user872661; 10.12.2011
comment
Пробовал NSString *returnPage = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]; не работал. returnPage имеет значение ‹nil› после выполнения =/ - person user872661; 10.12.2011
comment
Это означает, что вы используете неправильную кодировку... какая кодировка возвращается из вашего API? - person Richard J. Ross III; 10.12.2011
comment
Ну, API не мое, это обычная веб-страница. Как узнать, какую кодировку он использует? - person user872661; 15.12.2011