Ruby将IDN域从Punycode转换为Unicode

问题描述

|| 我正在编写一个Rails应用程序,该应用程序需要将IDN域名从Punycode转换为其等效的Unicode。我尝试安装具有绑定到GNU LibIDN的idn gem,但它不会编译本机代码。显然其他人在Ruby 1.9.x中也有同样的问题。 我还尝试了纯Ruby SimpleIDN gem,但是我更喜欢原生的东西。     

解决方法

        尝试simpleidn gem。它适用于Ruby 1.8.7和1.9.2。 编辑您的Gemfile:
gem \'simpleidn\'
然后您可以输入以下命令:
SimpleIDN.to_unicode(\"xn--mllerriis-l8a.com\")
=> \"møllerriis.com\"

SimpleIDN.to_ascii(\"møllerriis.com\")
=> \"xn--mllerriis-l8a.com\"
    ,        糟糕-好像我在发布后不久找到了一个能回答的问题(对不起)。在项目的RubyForge页面的错误报告部分中,有一个巧妙地放置于09/2010的补丁程序。现在将其添加到我的Gemfile中,可以使用idn库:
gem \'idn\',\'~> 0.0.2\',:git => \'git://github.com/mihu/idn\'
可惜宝石显然被遗弃了:/     ,        https://github.com/knu/ruby-domain_name似乎具有完全相同的功能:
irb(main):018:0> SimpleIDN::Punycode.encode(\'axa.test\')
=> \"axa.test-\"

irb(main):017:0> DomainName::Punycode.encode(\'axa.test\')
=> \"axa.test-\"
    ,        使用
Dnsruby
lib的
.punicode
方法的
Dnsruby::Name
类,可以将IDN域从Unicode UTF-8转换为ASCII punycode: Dnsruby :: Name.punycode(\'