2

我有一个非常奇怪的问题,我很感激帮助追踪它。

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

在我自己的计算机上,一切正常,但是在 heroku 上,它</body></html><html>在命中字符时插入 a ,并且选择器仅返回奇怪字符之前的元素。

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

我的电脑和 heroku 都在运行 nokogiri 1.5.5 和 ruby​​ 1.9.3。

4

1 回答 1

2

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

来自 Internet 的 HTML 文档可能会以多种方式被破坏。我已经在其中看到了各种各样的垃圾,如果我无法使用 iconv 或 Unicode 音译来理解它,我会求助于快速全局搜索并替换以删除任何不在正常 ASCII 范围内的内容,然后再进一步加工。


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

doc = Nokogiri::HTML(html.gsub("\u0011", ''))
于 2012-08-23T07:04:00.710 回答