39

我的应用程序中有以下代码。

NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:pathOfThumbNail]];

pathOfThumbNail 具有以下路径


http://70.84.58.40/projects/igolf/TipThumb/GOLF 58B.jpg


当我在 safari 浏览器中打开上述路径时 - 路径会自动更改并成功显示图像。

http://70.84.58.40/projects/igolf/TipThumb/GOLF%2058B.jpg


但在 iPhone 中,由于路径中的空间,图像未加载到 nsdata 中。

4

3 回答 3

99

使用:stringByAddingPercentEscapesUsingEncoding:

使用给定的编码返回接收者的表示,以确定将接收者转换为合法 URL 字符串所需的百分比转义。

-(NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding

接收者的表示,使用编码来确定将接收者转换为合法 URL 字符串所需的百分比转义。如果编码不能编码特定字符,则返回 nil

@rule 根据请求添加

NSString* urlText = @"70.84.58.40/projects/igolf/TipThumb/GOLF 58B.jpg";
NSString* urlTextEscaped = [urlText stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString: urlTextEscaped];
NSLog(@"urlText:        '%@'", urlText);
NSLog(@"urlTextEscaped: '%@'", urlTextEscaped);
NSLog(@"url:            '%@'", url);

NSLog 输出:

urlText:'70.84.58.40/projects/igolf/TipThumb/GOLF 58B.jpg'  
urlTextEscaped: '70.84.58.40/projects/igolf/TipThumb/GOLF%2058B.jpg'  
网址:'70.84.58.40/projects/igolf/TipThumb/GOLF%2058B.jpg'  
于 2009-09-17T20:29:02.063 回答
16

一种快速的 3.0 方法(stringByAddingPercentEscapesUsingEncoding 和 stringByAddingPercentEncodingWithAllowedCharacters 似乎现在已弃用):

let urlString ="your/url/".addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)
于 2016-09-27T10:40:32.350 回答
5

stringByAddingPercentEscapesUsingEncoding在 iOS 9.0 中已弃用,建议您stringByAddingPercentEncodingWithAllowedCharacters改用。

这是> iOS 9.0的Objective-C代码

NSString* urlText = @"70.84.58.40/projects/igolf/TipThumb/GOLF 58B.jpg";
NSString* urlTextEscaped = [urlText stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURL *url = [NSURL URLWithString: urlTextEscaped];

NSLog(@"urlText:        '%@'", urlText);
NSLog(@"urlTextEscaped: '%@'", urlTextEscaped);
NSLog(@"url:            '%@'", url);
于 2017-11-09T22:17:40.647 回答