duckduckgo/PunycodeSwift

PunycodeSwift is a pure Swift library to allows you to encode and decode punycoded strings


License
MIT

Documentation

Carthage compatible Version Platform Build Status codecov Language Packagist

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 12.0 or later
  • Swift 4.2

* No plans to support tvOS 11 or earlier for now

Installation

Carthage

Add the following to your Cartfile and follow these instructions.

github "gumob/PunycodeSwift"

CocoaPods

To integrate Punycode into your project, add the following to your Podfile.

platform :ios, '9.3'
use_frameworks!

pod 'Punycode'

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.