如何确定URL是否应该被编码?
问题描述:
我使用URLs
从互联网上下载,所以我不知道他们的格式提前,他们是动态的。如何确定URL是否应该被编码?
如何知道在运行时我应该编码URL
?
// `url` is retrieved from the Internet at run time
// When should I call following line?
let urlString = url!.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLFragmentAllowedCharacterSet())
如果它已经编码,调用stringByAddingPercentEncodingWithAllowedCharacters
会使URL
无效。
答
使用:NSString *unencodedUrlString = [originalURL stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
来解码URL。现在比较解码版本和原始版本。如果它们相同,则url不会被编码,否则它已经被编码。
+1
如果任何解码的组件包含'%'字符,这将不起作用。 – CouchDeveloper
你可以检查字符串,并作出一个广泛的假设,如果它包含'%'字符,它已经被编码? – Flexicoder
URL必须始终正确编码。严格来说,没有像未经编码的URL那样的东西。您可以使用辅助类“NSURLComponents”验证URL是否有效。 – CouchDeveloper
@CouchDeveloper它确实发生在非英文网址 –