在开发基于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