idnx provides a Ruby API for decoding Internationalized domain names into Punycode.
It provides multi-platform support by using the most approriate strategy based on the target environment:
- It uses (and requires the installation of) libidn2 in Linux / MacOS;
- It uses the appropriate winnls APIs in Windows;
- It falls back to a pure ruby Punycode 2003 implementation;
If you're on Linux or Mac OS, you'll have to install
# Mac OS > brew install libidn2 # Ubuntu, as an example > apt-get install idn2
Add this line to your application's Gemfile:
And then execute:
$ bundle install
Or install it yourself as:
$ gem install idnx
require "idnx" Idnx.to_punycode("bücher.de") #=> "xn--bcher-kva.de"
Ruby Support Policy
This library supports at least ruby 2.4 .It also supports both JRuby and Truffleruby.
JRuby on MacOS
idnx won't work in MacOS when using JRuby 9.2 or lower, due to jruby FFI not having the same path lookup logic than it's counterpart for CRuby, thereby not finding
libidn2. This has been fixed since JRuby 9.3 .
If you want to contribute, fork this project, and submit changes via a PR on github.
For running tests, you can run
Bug reports and pull requests are welcome on GitHub at https://github.com/HoneyryderChuck/idnx.