2

私は非常に奇妙な問題を抱えています、そしてそれを追跡するのを手伝っていただければ幸いです。

nokogiri gemを使用していくつかのhtmlを解析し、奇妙な文字を含むファイルを解析しています。このキャラクターが何であるかは完全にはわかりません。vimでは^Qと表示されます。

私のコンピューターでは、すべてが正常に機能しますが、herokuでは</body></html><html>、キャラクターにヒットしたときにを挿入し、セレクターは奇妙なキャラクターの前の要素のみを返します。

説明のために: Nokogiri::HTML( open("http://thoms.net.nz/e2.html")).css("body div").countはherokuで1つ、私のコンピューターで2つです。-この文字を含むファイルは、http://thoms.net.nz/e2.htmlからダウンロードできます。

私のコンピューターとherokuは、どちらもnokogiri1.5.5とruby1.9.3を実行しています。

4

1 に答える 1

2

^Qソフトウェア制御文字 (XON) であり、HTML には含まれていません。その予想外の存在は、Nokogiri と Heroku の両方を混乱させているのではないかと思いますが、その方法は異なります。

インターネットの荒野からの HTML ドキュメントは、さまざまな方法で破損する可能性があります。それらの中にあらゆる種類のゴミを見てきました.iconvまたはUnicode音訳を使用してそれを理解できなかった場合は、通常のASCII範囲にないものをすべて削除するために、迅速なグローバル検索と置換に頼ります。処理。


Ruby では、グローバル検索と置換は を使用しString#gsubます。

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