Je reçois un fichier html sous NSData et j'ai besoin de l'analyser pour en extraire quelques informations. Mon approche était de le convertir en NSString avec l'encodage UTF8 (le html a des caractères non anglais, le russe par exemple) - il a échoué. J'ai utilisé quelque chose comme ça:Problème de conversion NSData à NSString!
NSString *respData = [NSString stringWithUTF8String:[theData bytes]];
mais il est retourné à zéro.
La seule chose qui fonctionnait vraiment était
[NSString stringWithCString:[theData bytes] length:[theData length]];
mais quand il rencontre des personnages russes par exemple, il retourne jibrish.
Ensuite, mon approche suivante consistait à analyser le tableau d'octets des données, extraire les octets dont j'avais besoin et les convertir en quelque sorte en NSString. J'ai essayé quelque chose comme ça:
-(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];
}
* Êtes-vous sûr * que le fichier est encodé en UTF-8, et non pas comme ISO 8859-5 ou quelque chose? – Wevah