HTMLファイルをNSDataとして取得しており、その一部を抽出する必要があります。そのためには、UTF8エンコーディングを使用してNSStringに変換する必要があります。問題は、おそらくNSDataにUTF8に対して無効なバイトが含まれているために、この変換が失敗することです。データのバイト配列を取得して調べようとしましたが、ASCII以外の文字(ヘブライ文字など)に出くわすたびにジブリッシュになります。
ヘルプをいただければ幸いです。
アップデート:
ゴードンへ-次のように生成されたNSData:
NSData *theData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&theResponse error:&theError];
私が変換が失敗すると言うとき、私はそれを意味します
[[NSString alloc] initWithData:temp encoding:NSUTF8StringEncoding]
nilを返します
エドへ-これが私のコードです(NSDataからバイト配列を取得し、必要なものを見つけて、そこから別のバイト配列を構築しました-それをNSDataに変換し、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)));
NSLog(@"%d %d",begin1, end1);
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];
}