PunycodeSwift
PunycodeSwift
is a pure Swift library to allows you to encode and decode punycoded
strings by using String extension.
What is Punycode?
Punycode is a representation of Unicode with the limited ASCII character subset used for Internet host names. Using Punycode, host names containing Unicode characters are transcoded to a subset of ASCII consisting of letters, digits, and hyphen, which is called the Letter-Digit-Hyphen (LDH) subset. For example, München (German name for Munich) is encoded as Mnchen-3ya. (Wikipedia)
Requirements
- iOS 9.3 or later
- macOS 10.12 or later
- tvOS 10.2 or later
- Swift 4.2 or later
Installation
Carthage
Add the following to your Cartfile
and follow these instructions.
github "gumob/PunycodeSwift" # Latest (Swift 5.0)
github "gumob/PunycodeSwift" ~> 2.0 # Swift 5.0
github "gumob/PunycodeSwift" ~> 1.0 # Swift 4.2
CocoaPods
To integrate Punycode into your project, add the following to your Podfile
.
platform :ios, '9.3'
use_frameworks!
pod 'Punycode' # Latest (Swift 5.0)
pod 'Punycode', '~> 2.0' # Swift 5.0
pod 'Punycode', '~> 1.0' # Swift 4.2
Usage
Encode and decode IDNA:
import Punycode
var sushi: String = "寿司"
sushi = sushi.idnaEncoded!
print(sushi) // xn--sprr0q
sushi = sushi.idnaDecoded!
print(sushi) // "寿司"
Encode and decode Punycode directly:
import Punycode
var sushi: String = "寿司"
sushi = sushi.punycodeEncoded!
print(sushi) // sprr0q
sushi = sushi.punycodeDecoded!
print(sushi) // "寿司"
Copyright
Punycode is released under MIT license, which means you can modify it, redistribute it or use it however you like.