Nokogiri在heroku上产生不同的结果?

时间:2012-08-23 05:29:26

标签: ruby heroku nokogiri

我遇到了一个非常奇怪的问题,我很感激帮助跟踪它。

我正在使用nokogiri gem解析一些html,我正在解析一个有奇怪字符的文件。不完全确定这个角色是什么,在vim中它显示为^ Q。

在我自己的计算机上,一切正常,但是在heroku上它会在遇到角色时插入</body></html><html>,而选择器只返回奇怪角色之前的元素。

说明: heroku上的Nokogiri::HTML( open("http://thoms.net.nz/e2.html")).css("body div").count为1,计算机上为2。 - 可以从http://thoms.net.nz/e2.html下载包含此字符的文件。

我的电脑和heroku都使用ruby 1.9.3运行nokogiri 1.5.5。

1 个答案:

答案 0 :(得分:2)

^Q是一个软件控制字符(XON),不应该是HTML格式。我怀疑它的意外存在让Nokogiri和Heroku都感到困惑,但是以不同的方式。

来自互联网的HTML文档可能会以多种方式被破坏。我已经看到了各种各样的垃圾,如果我无法使用iconv或Unicode音译来理解它,我会采用快速全局搜索并替换以删除任何不在正常ASCII范围内的内容处理。


在Ruby中,全局搜索和替换使用String#gsub

doc = Nokogiri::HTML(html.gsub("\u0011", ''))