如何将带有 textEncoding utf-8 的 NSData 转换为 NSURL

How to convert NSData with textEncoding utf-8 into NSURL

我想将 NSData (textEncoding utf-8) 转换为 NSURL。 我正在为此编写下面的代码,但是从 NSData 到 NSString 的转换返回 nil。 (可能是由于编码类型)

NSString *stringFromData = [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding]; // stringFromData is nil after execution of this line.
NSURL *url = [[NSURL alloc] initWithString:stringFromData];

那么在我的例子中,我应该怎么做才能将 NSData 转换为 NSURL。

但是当我尝试将此数据加载到 webview 时,它运行良好。这是我将此数据加载到 webview 的代码。

[self.webView loadData:myData MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil]; //PDF is showing in my webview.

但我无法将此 NSData 转换为 NSURL。我应该使用什么编码将带有 textEncoding utf-8 的 NSData 转换为 NSURL?

您正在尝试将表示 PDF 的数据加载到 NSString 中。 PDF 文件不包含表示文本的 UTF-8 编码字符,它是一个包含 header 信息、字体、矢量图形和文本的文件。

在我看来,解决您的问题的唯一方法是将 NSData 的来源更改为可以提供构成 URL.

的 UTF-8 编码字符的内容

如果您无法通过任何其他方式获取数据,为什么不检查是否可以从 PDF 中提取文本数据? https://github.com/zachron/pdfiphone

您试过将数据写入本地文件吗,

NSString *docPath = [NSHomeDirectory() stringByAppendingString:@"/Documents"];
NSString *pdfFilePath = [docPath stringByAppendingPathComponent:@"pdfFile.pdf"];
BOOL success =  [myData writeToFile:pdfFilePath atomically:YES];
if (success) {
    NSURL *url = [[NSURL alloc] initFileURLWithPath:pdfFilePath];
    NSLog(@"url from data : %@",url);
}

希望对您有所帮助。

谢谢

好的,试试这个:

//Convert data to string
     NSString *urlString = [[NSString alloc] initWithData:self encoding:NSUTF8StringEncoding];
//Convert the string to URL
     NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];