IDNA

Ruby FFI bindings for the libidn2 library, providing some simple methods to handle internationalised domain names backed by the GNU library's complete IDNA2008 / TR46 implementation.

The gem is tested with "latest at last test run" patch versions of Ruby 3.2. It is believed to work on Ruby 2.4 or later, but this is no longer automatically tested.

Installation

Add this line to your application's Gemfile:

gem 'idna'

And then execute:

$ bundle

Or install it yourself as:

$ gem install idna

You will need to install libidn2 separately, if it is not already installed on your system. For example, macOS users with Homebrew can run brew install libidn2.

Usage

Transform

  • Attach function to idn2_to_ascii_8z:
Idna.to_ascii('あいうえお') #xn--l8jegik
  • Attach function to idn2_to_unicode_8z8z:
Idna.to_unicode('xn--l8jegik') #あいうえお

Configure

  • Custom libidn2 name:
Idna.configure do |config|
  config.ffi_lib = 'idn2.so.11'
end

Idna.reload!

Development

$ bundle exec rspec

License

  • MIT