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)
- iOS 9.3 or later
- macOS 10.12 or later
- tvOS 10.2 or later
- Swift 4.2 or later
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
To integrate Punycode into your project, add the following to your
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
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) // "寿司"
Punycode is released under MIT license, which means you can modify it, redistribute it or use it however you like.