我得到一个作为 NSData 的 HTML 文件,需要提取其中的某些部分。为此,我需要使用 UTF8 编码将其转换为 NSString。问题是这种转换失败,可能是因为 NSData 包含对 UTF8 无效的字节。我试图获取数据的字节数组并对其进行检查,但是每次遇到非 ASCII 字符(例如希伯来字母)时,我都会感到不自在。
帮助将不胜感激。
更新:
对 Gordon - 生成的 NSData 是这样的:
NSData *theData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&theResponse error:&theError];
当我说转换失败时,我的意思是
[[NSString alloc] initWithData:temp encoding:NSUTF8StringEncoding]
返回零
致 Ed - 这是我的代码(我从 NSData 获得了 Byte 数组,找到了我需要的东西,并从中构造了另一个 Byte 数组 - 将其转换为 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];
}