如果两台机器上的代码相同,那么您的任何捆绑 gem 在 Windows 上都可能与该代码不兼容。在从 Ubuntu 移动代码后,我之前也遇到过许多与 windows 上的 gem 相关的问题。
在 Ubuntu 上,用于 gems 的 sudo install 命令自行安装 gems 和依赖项,无需下载任何其他内容,但在 Windows 上,具有依赖项的 gem 安装需要手动安装才能正常工作。
请检查 Windows 上任何 gem 的任何兼容性问题。此外,我怀疑 jruby 会导致错误,因为我在 windows 上的应用程序中也使用了 nokogiri,之前没有任何问题。
此外,Nokogiri
具有处理不同编码的一些功能(可能通过 Iconv),但我对此有点不习惯。
在Nokogiri
中,字符串始终在内部存储为 UTF-8。返回文本值的方法将始终返回 UTF-8 编码的字符串。返回 XML 的方法(如 to_xml、to_html 和 inner_html)将返回一个像源文档一样编码的字符串。
如果您希望 Nokogiri 正确处理文档编码,最好的办法是显式设置编码。
还要检查在 Windows 上,如果您只解析普通文本或 html 文档,它是否表现出相同的行为?像:
irb(main):017:0> Nokogiri::HTML.fragment(' ', 'utf-8').text
irb(main):017:0> Nokogiri.HTML('').at_css('body').content
这也可能对您有所帮助 - http://nokogiri.org/。还可以查看标题Developing on JRuby。