Otrzymuję plik html jako NSData i trzeba go przetworzyć, aby wyodrębnić pewne informacje. Moje podejście polegało na przekonwertowaniu go na NSString za pomocą kodowania UTF8 (html ma nie angielskie znaki, np. Rosyjski) - nie udało się. Użyłem czegoś takiego:Konwersja NSData do NSString!
NSString *respData = [NSString stringWithUTF8String:[theData bytes]];
ale zwrócono zero.
Jedyną rzeczą, która faktycznie przepracowanych było
[NSString stringWithCString:[theData bytes] length:[theData length]];
ale gdy napotka rosyjski znaków na przykład zwraca jibrish.
Następnie moim następnym podejściem było przeanalizować tablicę bajtów danych, wyodrębnić potrzebne bajty i jakoś przekonwertować je na NSString. Próbowałem coś takiego:
-(NSString *)UTF8StringFromData:(NSData *)theData{
Byte *arr = [theData bytes];
NSUInteger begin1 = [self findIndexOf:@"<li>" bArr:arr size:[theData length]]+4;
NSUInteger end1 = [self findIndexOf:@"</li></ol>" bArr:arr size:[theData length]];
Byte *arr1 = (Byte *)malloc(sizeof(Byte)*((end1-begin1+1)));
int j = 0;
for (int i = begin1; i < end1; i++){
arr1[j] = arr[i];
j++;
}
arr1[j]='\0';
NSData *temp = [NSData dataWithBytes:arr1 length:j];
return [[NSString alloc] initWithData:temp encoding:NSUTF8StringEncoding];
}
Czy jesteś pewien, * * że plik jest zakodowany jako UTF-8, a nie jako ISO 8859-5 lub coś? – Wevah