Tôi nhận được tệp html dưới dạng NSData và cần phân tích cú pháp để trích xuất một số thông tin. Cách tiếp cận của tôi là chuyển đổi nó thành NSString với mã hóa UTF8 (html có các ký tự không phải tiếng Anh, ví dụ như tiếng Nga) - nó không thành công. Tôi đã sử dụng một cái gì đó như thế:NSData để NSString vấn đề hội tụ!
NSString *respData = [NSString stringWithUTF8String:[theData bytes]];
nhưng nó trở lại không.
Điều duy nhất mà thực sự làm việc là
[NSString stringWithCString:[theData bytes] length:[theData length]];
nhưng khi nó gặp nhân vật Nga ví dụ nó sẽ trả về jibrish.
Sau đó, cách tiếp cận tiếp theo của tôi là phân tích mảng byte của dữ liệu, trích xuất các byte tôi cần và bằng cách nào đó chuyển đổi chúng thành NSString. Tôi cố gắng một cái gì đó như thế:
-(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];
}
Bạn có chắc chắn * * rằng các tập tin được mã hóa theo UTF-8, và không phải là tiêu chuẩn ISO 8859-5 hoặc một cái gì đó? – Wevah