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

时间:2015-01-24 07:27:09

标签: ios objective-c encoding nsdata 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?

3 个答案:

答案 0 :(得分:2)

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

在我看来,解决您问题的唯一方法是将NSData的来源更改为提供构成网址的UTF-8编码字符的内容。

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

答案 1 :(得分:0)

您是否尝试将数据写入本地文件

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);
}

希望这有帮助。

由于

答案 2 :(得分:0)

好的,试试这个:

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