Obtengo un archivo html como NSData y necesito analizarlo para extraer algo de información. Mi enfoque era convertirlo a NSString con codificación UTF8 (el html no tiene caracteres en inglés, ruso por ejemplo) - falló. Utilicé algo así:NSData al problema de conversión de NSString!
NSString *respData = [NSString stringWithUTF8String:[theData bytes]];
pero devolvió nil.
La única cosa que funcionaba era
[NSString stringWithCString:[theData bytes] length:[theData length]];
pero cuando se encuentra con caracteres rusos, por ejemplo, se devuelve jibrish.
Luego mi siguiente enfoque fue analizar el conjunto de bytes de los datos, extraer los bytes que necesito y convertirlos de alguna manera a NSString. He intentado algo así:
-(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];
}
¿Estás seguro de * * que el archivo está codificado como UTF-8, y no como la norma ISO 8859-5 o algo? – Wevah