Ios 如何决定URL是否应该编码?
我使用的是从互联网下载的Ios 如何决定URL是否应该编码?,ios,objective-c,swift,Ios,Objective C,Swift,我使用的是从互联网下载的url,所以我事先不知道它们的格式,它们是动态的 如何知道是否应该在运行时对URL进行编码 // `url` is retrieved from the Internet at run time // When should I call following line? let urlString = url!.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLFragmentAllo
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未编码,否则它已编码。您可以检查字符串,并大致假设如果它包含“%”字符,则其已编码?url必须始终正确编码。严格地说,没有像未编码的URL这样的东西。您可以使用helper类NSURLComponents
@CouchDeveloper来验证URL是否有效。对于非英语的用户,确实会发生这种情况URLs@JoeHuang不,URL就其字符而言是有效的或无效的。看见因此,基本上,URL中不能有无效字符。“不安全”的字符需要转义。@CouchDeveloper例如,当我得到一个非英语的URL时,它是有效的(我可以将它放在浏览器中打开),但是如果我在将它传递给NSURL
之前没有对它进行编码,它将崩溃。如何避免这种情况?如果任何解码组件包含%
字符,则此操作将不起作用。