/punycoder

A cli tool to convert idna domain names to punycode. IDNA (Internationalized Domain Name in Applications) is a set of standards and protocols used to support non-ASCII characters in domain names.

Primary LanguageGoApache License 2.0Apache-2.0

Punycoder Logo

Punycoder converts international domain names to their (RFC1035 compatible) punycode representations on the commandline, so you can use them with nslookup or dig.

This is done by first converting the non-ASCII characters into their Unicode code points, and then encoding those code points using a special base-36 encoding scheme. The resulting string of ASCII characters is prefixed with the characters "xn--" to indicate that it is a Punycode-encoded domain name.

Circleci Builds Github Issues Github Activity
CodeClimate Maintainability CodeClimate Test Coverage Go Version License Version

What's new

v0.2.2 (16/06/23)

  • new logo

v0.2.1 (25/05/23)

  • refactored cli args.

v0.2.0 (22/05/23)

  • support unicode encoding of punycode

Up and running

Homebrew

brew tap simonmittag/cli &&
  brew install punycoder &&
  punycoder 

Golang

git clone https://github.com/simonmittag/punycoder && cd punycoder && 
go install github.com/simonmittag/punycoder/cmd/punycoder && 
punycoder 

Usage

🌐 punycoder[v0.2.2]
λ Usage: punycoder host | [-u] host | [-v] | [-h]
  -h    print usage
  -u    convert to unicode
  -v    print punycoder version

Examples

Use punycoder with bash pipes reading from stdin

echo 1❤️.ws | punycoder | nslookup
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
Name:	xn--1-7iqv272g.ws
Address: 64.70.19.203
echo xn--1-7iqv272g.ws | punycoder -u 
1❤️.ws

Contributions

The punycoder team welcomes all contributors. Everyone interacting with the project's codebase, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct