#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!

I'm also on Twitter and GitHub.

Subscribe via RSS or email.