PercentEncoder
is a lightweight library to escape string using so called URL encoding in Swift.
PercentEncoder
uses JavaScriptCore
framework for URL-encoding although URL-encoding is executed with CFURLCreateStringByAddingPercentEscapes()
or NSString.stringByAddingPercentEncodingWithAllowedCharacters()
in most cases.
The followings is the reason and has motivated me to make this library.
CFURLCreateStringByAddingPercentEscapes()
deprecated in iOS9NSString.stringByAddingPercentEncodingWithAllowedCharacters()
is introduced from iOS 7. However it won't work in multi-byte languages like Japanes, Chinese, etc and an app crashes as shown at the issue in Alamorefire.
PercentEncoder
offers PercentEncoding
enum and String
extension methos for URL-encoding.
PercentEncoding
has four values which are equivalent to Javscript functions(encodeURI
, encodeURIComponent
, decodeURI
, decodeURIComponent
).
let url = "http://tasanobu.jp?city=東京&year='20"
/// EncodeURI
let escaped = PercentEncoding.EncodeURI.evaluate(string: url)
// encoded to "http://tasanobu.jp?city=%E6%9D%B1%E4%BA%AC&year='20"
/// DecodeURI
PercentEncoding.DecodeURIComponent.evaluate(string: escaped)
// decoded back to "http://tasanobu.jp?city=東京&year='20"
let value = "東京" // 東京 means Tokyo which is the capital of Japan.
/// EncodeURI
let encoded = PercentEncoding.EncodeURIComponent.evaluate(string: value)
// encoded to "%E6%9D%B1%E4%BA%AC"
/// DecodeURI
PercentEncoding.DecodeURIComponent.evaluate(string: encoded)
// decoded back to "東京"
PercentEncoding
offers String extension methods which are equivalent to Javscript functions(encodeURI
, encodeURIComponent
, decodeURI
, decodeURIComponent
).
/// encodeURI
"http://tasanobu.jp?city=東京&year='20".ped_encodeURI()
/// decodeURI
"http://tasanobu.jp?city=%E6%9D%B1%E4%BA%AC&year='20".ped_decodeURI()
/// encodeURIComponent
let encoded = "東京".ped_encodeURIComponent()
// encoded to "%E6%9D%B1%E4%BA%AC"
/// decodeURIComponent
encoded.ped_decodedURIComponent()
// decoded back to "東京"
- Swift 4.0
- Xcode 9.0
- iOS 8.0+
-
Install with Cocoapods
platform :ios, '8.0' use_frameworks! pod 'PercentEncoder'
-
Git submodule
See https://github.com/tasanobu/PercentEncoder/releases
PercentEncoder
is released under the MIT license. See LICENSE for details.