You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用whois gem查询manpôwer.com无匹配结果的技术求助

问题:whois gem无法查询带特殊字符的域名manpôwer.com

使用whois gem v5.1.0查询域名manpôwer.com时,返回无匹配记录,但该域名可通过Verisign数据库或第三方网站正常查询到。

错误返回示例:

No match for "MANPôWER.COM".
>>> Last update of whois database: 2023-03-22T14:56:58Z <<<

irb执行日志:

irb(main):002:0> require 'whois'
=> true

irb(main):003:0> Gem.loaded_specs["whois"].version
=> #<Gem::Version "5.1.0">

irb(main):004:0> Whois.whois("manpôwer.com")
=> "No match for \"MANP\xC3\xB4WER.COM\".\r\n>>> Last update of whois database: 2023-03-22T15:25:36Z <<<\r\n\r\nNOTICE: The expiration date displayed in this record...(省略后续条款)"

问题原因

带特殊字符(如ô)的域名属于国际化域名(IDN),Verisign的whois服务器仅支持Punycode格式的IDN查询,而whois gem v5.1.0不会自动将UTF-8格式的IDN转换为Punycode,导致查询的字符串无法被服务器识别。


解决方法

将UTF-8格式的IDN转换为Punycode后再执行查询,步骤如下:

  1. 安装simpleidn gem(用于IDN与Punycode的转换):
gem install simpleidn
  1. 在代码中转换域名并查询:
require 'whois'
require 'simpleidn'

# 将UTF-8域名转换为Punycode
punycode_domain = SimpleIDN.to_ascii("manpôwer.com")
# 转换结果为:xn--manpwer-0ta.com

# 使用Punycode格式的域名查询
result = Whois.whois(punycode_domain)
puts result

执行上述代码即可获取该域名的正确whois记录。


内容的提问来源于stack exchange,提问作者Nowmi Nayem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:25:21