如何在iPhone中对字符串(NSString)进行URL编码?

在开发基于API的Web应用程序时,我们绝对需要与多个Web服务和URL相交。网址可能包含特殊字符,搜索字词,查询,标题和许多其他内容,具体取决于我们所需的服务。这就是为什么我们需要某种编码,以便我们创建的URL和被调用的URL是相同的。

为了达到目标C的相同要求,我们可以使用-

#import "NSString+URLEncoding.h"
@implementation NSString (URLEncoding)
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding {
   return (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
   (CFStringRef)self, NULL, (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ", CFStringConvertNSStringEncodingToEncoding(encoding));
}
@end

在目标C中实现URL编码的另一种方法是-

NSString *sUrl = @"http://www.myService.com/search.jsp?param= name";
NSString *encod = [sUrl stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];

同样,URL编码可以在Swift中实现,例如-

func getURL(str: String ) {
   return str.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
}

它将返回一个编码的URL字符串,可以像这样使用

var sURL = " http://www.myService.com/search.jsp?param= name"
print(getURL(sURL))

结果将打印以下内容。

http://www.myService.com/search.jsp?param= name