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
- macOS 10.13 or later
- iOS 12.0 or later
- tvOS 12.0 or later
- watchOS 4.0 or later
- visionOS 1.0 or later
- Swift 5.0 or later
Installation
Swift Package Manager
Add the following to your Package.swift
file.
macOS, iOS, tvOS, watchOS, visionOS, and Swift 5
dependencies: [ .package(url: "https://github.com/gumob/PunycodeSwift.git", .upToNextMajor(from: "3.0.0")) ]
macOS, iOS, tvOS, and Swift 5
dependencies: [ .package(url: "https://github.com/gumob/PunycodeSwift.git", .upToNextMajor(from: "2.1.1")) ]
Carthage
Add the following to your Cartfile
and follow these instructions.
macOS, iOS, tvOS, watchOS, visionOS, and Swift 5
github "gumob/PunycodeSwift" ~> 3.0
macOS, iOS, tvOS, and Swift 5
github "gumob/PunycodeSwift" ~> 2.0
macOS, iOS, tvOS, and Swift 4
github "gumob/PunycodeSwift" ~> 1.0
CocoaPods
To integrate TLDExtract into your project, add the following to your Podfile
.
macOS, iOS, tvOS, watchOS, visionOS, and Swift 5.0
pod 'Punycode', '~> 3.0'
macOS, iOS, tvOS, and Swift 5.0
pod 'Punycode', '~> 2.0'
macOS, iOS, tvOS, and Swift 4.2
pod 'Punycode', '~> 1.0'
Usage
Full documentation is available at https://gumob.github.io/PunycodeSwift/swiftdoc/.
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.