我收到了一个HTML文件的NSData,并需要提取其中的一些部分。为此,我需要使用UTF8编码将其转换为NSString。问题是这种转换失败了,可能是因为NSData包含了对于UTF8无效的字节。我尝试获取数据的字节数组并遍历它,但每次遇到非ASCII字符(例如希伯来字母)时,我都会得到乱码。
需要帮助,谢谢。
更新:
对于Gordon - 生成的NSData如下:
当我说转换失败时,我的意思是
需要帮助,谢谢。
更新:
对于Gordon - 生成的NSData如下:
NSData *theData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&theResponse error:&theError];
当我说转换失败时,我的意思是
[[NSString alloc] initWithData:temp encoding:NSUTF8StringEncoding]
返回 nil
给 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];
}