问题描述
||
我正在编写一个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(\'