Ruby on rails Ruby将IDN域从Punycode转换为Unicode
我正在编写一个Rails应用程序,它需要将一个IDN域名从Punycode转换为其Unicode等价物。我尝试安装绑定到GNU LibIDN的,但它不会编译本机代码。显然Ruby 1.9.x也有同样的问题Ruby on rails Ruby将IDN域从Punycode转换为Unicode,ruby-on-rails,ruby,ruby-on-rails-3,unicode,idn,Ruby On Rails,Ruby,Ruby On Rails 3,Unicode,Idn,我正在编写一个Rails应用程序,它需要将一个IDN域名从Punycode转换为其Unicode等价物。我尝试安装绑定到GNU LibIDN的,但它不会编译本机代码。显然Ruby 1.9.x也有同样的问题 我也试过纯Ruby,但我更喜欢本地的。哎哟-看起来我在发布后不久就找到了一个合适的答案(对不起)。从2010年9月开始,在本手册的bug报告部分有一个微妙的位置。现在,将其添加到我的GEM文件中可以使用idn库: gem 'idn', '~> 0.0.2', :git => 'gi
我也试过纯Ruby,但我更喜欢本地的。哎哟-看起来我在发布后不久就找到了一个合适的答案(对不起)。从2010年9月开始,在本手册的bug报告部分有一个微妙的位置。现在,将其添加到我的GEM文件中可以使用idn库:
gem 'idn', '~> 0.0.2', :git => 'git://github.com/mihu/idn'
可惜的是,这颗宝石显然被抛弃了://p>试试这个。它适用于Ruby 1.8.7和1.9.2
编辑您的文件:
gem 'simpleidn'
然后可以按如下方式输入命令:
SimpleIDN.to_unicode("xn--mllerriis-l8a.com")
=> "møllerriis.com"
SimpleIDN.to_ascii("møllerriis.com")
=> "xn--mllerriis-l8a.com"
似乎具有完全相同的功能:
irb(main):018:0> SimpleIDN::Punycode.encode('axa.test')
=> "axa.test-"
irb(main):017:0> DomainName::Punycode.encode('axa.test')
=> "axa.test-"
使用lib方法的类允许您将IDN域从Unicode UTF-8转换为ASCII punycode:
Dnsruby::Name.punycode('也许你想维护宝石,那就好了。@asaaki我完全愿意,但我仍然是一个Ruby noob。也许有一天:)