Сначала я бы использовал initWithData:encoding:
для настройки строки NSString. Небольшая разница, но у этого метода есть причина.
Затем я бы сделал шестнадцатеричную запись self.receivedData
, чтобы посмотреть, что там на самом деле. Если эти данные неправильно закодированы в UTF8, то initWithData:encoding:
завершится ошибкой.
(Google для шестнадцатеричного дампа NSData, чтобы найти для этого полезные функции других людей)
Я обнаружил, что иногда веб-сервисы небрежно относятся к своей кодировке. Поэтому я обычно применяю запасной вариант так:
NSString* html = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
if (html == nil) {
html = [[NSString alloc] initWithData: data encoding: NSISOLatin1StringEncoding];
if (html == nil) {
html = [[NSString alloc] initWithData: data encoding: NSMacOSRomanStringEncoding];
}
}
Прискорбно, что это требуется, но многие веб-службы не написаны и не настроены должным образом.