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