Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何决定URL是否应该编码?_Ios_Objective C_Swift - Fatal编程技术网

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
之前没有对它进行编码,它将崩溃。如何避免这种情况?如果任何解码组件包含
%
字符,则此操作将不起作用。