【发布时间】:2010-11-27 10:17:27
【问题描述】:
我得到一个作为 NSData 的 html 文件,需要对其进行解析以提取一些信息。我的方法是使用 UTF8 编码将其转换为 NSString(html 有非英文字符,例如俄语) - 它失败了。我用过类似的东西:
NSString *respData = [NSString stringWithUTF8String:[theData bytes]];
但它返回 nil。
唯一真正起作用的是
[NSString stringWithCString:[theData bytes] length:[theData length]];
但是当它遇到例如俄语字符时,它会返回 jibrish。
然后我的下一个方法是解析数据的字节数组,提取我需要的字节并以某种方式将它们转换为 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];
}
【问题讨论】:
-
您确定该文件被编码为 UTF-8,而不是 ISO 8859-5 之类的吗?
标签: iphone objective-c encoding nsstring nsdata