2016-02-29 19 views
-2

我使用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無效。

+0

你可以檢查字符串,並作出一個廣泛的假設,如果它包含'%'字符,它已經被編碼? – Flexicoder

+2

URL必須始終正確編碼。嚴格來說,沒有像未經編碼的URL那樣的東西。您可以使用輔助類「NSURLComponents」驗證URL是否有效。 – CouchDeveloper

+0

@CouchDeveloper它確實發生在非英文網址 –

回答

1

使用:NSString *unencodedUrlString = [originalURL stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];來解碼URL。現在比較解碼版本和原始版本。如果它們相同,則url不會被編碼,否則它已經被編碼。

+1

如果任何解碼的組件包含'%'字符,這將不起作用。 – CouchDeveloper

相關問題