我遇到了一个非常奇怪的问题,我很感激帮助跟踪它。
我正在使用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。
答案 0 :(得分:2)
^Q
是一个软件控制字符(XON),不应该是HTML格式。我怀疑它的意外存在让Nokogiri和Heroku都感到困惑,但是以不同的方式。
来自互联网的HTML文档可能会以多种方式被破坏。我已经看到了各种各样的垃圾,如果我无法使用iconv或Unicode音译来理解它,我会采用快速全局搜索并替换以删除任何不在正常ASCII范围内的内容处理。
在Ruby中,全局搜索和替换使用String#gsub
。
doc = Nokogiri::HTML(html.gsub("\u0011", ''))