CocoaPods trunk is moving to be read-only. Read more on the blog, there are 18 months to go.

PercentEncoder 1.2.1

PercentEncoder 1.2.1

TestsTested
LangLanguage SwiftSwift
License MIT
ReleasedLast Release Nov 2017
SwiftSwift Version 4.0
SPMSupports SPM

Maintained by Kazunobu Tasaka, kitoko552.



PercentEncoder

PercentEncoder is a lightweight library to escape string using so called URL encoding in Swift.

Introduction

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 iOS9
  • NSString.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.

Usage

PercentEncoder offers PercentEncoding enum and String extension methos for URL-encoding.

PercentEncoding

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 "東京"

String extension

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 "東京"

Requirements

  • Swift 3.0
  • Xcode 8.0
  • iOS 8.0+

Installation

  • Install with Cocoapods

    platform :ios, '8.0'
    use_frameworks!
    
    pod 'PercentEncoder'
  • Git submodule

Release Notes

See https://github.com/tasanobu/PercentEncoder/releases

License

PercentEncoder is released under the MIT license. See LICENSE for details.