Ruby将IDN域从Punycode转换为Unicode

我正在编写一个Rails应用程序,需要将来自Punycode的IDN域名转换为其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页面的bug报告部分,有一个从09/2010开始的巧妙放置的补丁 。 将此添加到我的Gemfile现在允许我使用idn库:

 gem 'idn', '~> 0.0.2', :git => 'git://github.com/mihu/idn' 

gem明显被遗弃太糟糕了:/

Interesting Posts