NSData として html ファイルを取得しており、それを解析して情報を抽出する必要があります。私のアプローチは、それをUTF8エンコーディングでNSStringに変換することでした(htmlには英語以外の文字、たとえばロシア語が含まれています)-失敗しました。私はそのようなものを使用しました:
NSString *respData = [NSString stringWithUTF8String:[theData bytes]];
しかし、それは nil を返しました。
実際に機能した唯一のことは
[NSString stringWithCString:[theData bytes] length:[theData length]];
ただし、たとえばロシア語の文字に遭遇すると、ジブリッシュが返されます。
それから私の次のアプローチは、データのバイト配列を解析し、必要なバイトを抽出し、何らかの方法でそれらを NSString に変換することでした。私はそのようなことを試しました:
-(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];
}