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 libidn2
first:
# Mac OS
> brew install libidn2
# Ubuntu, as an example
> apt-get install idn2
Add this line to your application's Gemfile:
gem 'idnx'
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"
This library supports at least ruby 2.4 .It also supports both JRuby and Truffleruby.
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 brew
-installed 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 rake test
.
Bug reports and pull requests are welcome on GitHub at https://github.com/HoneyryderChuck/idnx.