NSData的&NSURL - 网址与具有空间的问题(NSData & NSURL - url w

2019-07-18 10:00发布

我在我的应用程序下面的代码。

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的加载。

Answer 1:

用途: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'  
url:            '70.84.58.40/projects/igolf/TipThumb/GOLF%2058B.jpg'  


Answer 2:

一个快速的方法3.0(stringByAddingPercentEscapesUsingEncoding和stringByAddingPercentEncodingWithAllowedCharacters似乎现在不推荐):

let urlString ="your/url/".addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)


Answer 3:

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];
enter code here

NSLog(@"urlText:        '%@'", urlText);
NSLog(@"urlTextEscaped: '%@'", urlTextEscaped);
NSLog(@"url:            '%@'", url);


文章来源: NSData & NSURL - url with space having problem