#06: URL/URI Escaping in Swift 3: Encoding and Decoding
The most straightforward way to escape URLs in Swift is to simply use one of the methods provided by NSString from Foundation:
import Foundation
var original = "This/is a test"
var escaped = original.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
escaped! //This%2Fis%20a%20test
There are a few default CharacterSet provided via static property to choose from, depending on the final destination of the encoded string:
| Value | Set Characters |
|---|---|
| .urlFragmentAllowed | ”#%<>[]^`{|} |
| .urlHostAllowed | ”#%/<>?@\^`{|} |
| .urlPasswordAllowed | ”#%/:<>?@[]^`{|} |
| .urlPathAllowed | ”#%;<>?[]^`{|} |
| .urlQueryAllowed | ”#%<>[]^`{|} |
| .urlUserAllowed | ”#%/:<>?@[]^` |
Additionally, if you have a different use case in mind with a custom set of characters to escape, you can create your own character set specifying all the characters you need in a string:
var myCharset= CharacterSet("#%&")
And then, use it with addingPercentEncoding.
Did you like this article? Let me know on Twitter or subscribe for updates!