0

私はちょうど面白いバグに出くわしました...それでも正確に何が起こっているのかを理解しようとしています。多分あなたは助けることができます。

まず、コンテキスト。私は現在、さらに別の人からhtmlへのコンバーターを構築しています(何らかの理由でここではやる気を起こさせませんが、必要です)。

したがって、下のスクリーンショット(リンクを参照)、より正確には輪郭が描かれたスポットを見てください。見る?アッパーシェルには&lt;があります。および&gt;、つまり、エスケープされたhtml。下のシェルにいる間、私は<と>を直接持っています。

しかし、ご覧のとおり(または、ガラスを真剣に見る必要がありますか?)、コマンドman 2 semget | webmannerは両側で同じですwhich webmanner。この2つはほぼ同時に実行され、その間にスクリプトに変更は加えられません。

[おっと、まだ写真を投稿できません...ここにリンクがあります]

http://aspyct.org/media/webmanner-bug.png

しかし、下のシェルは古いです(約1時間前に開いています)。新しいシェルはすべて印刷されます&lt;。したがって、私の最初の推測では、ファイルの古いiノードや古いブロックなどへの参照がキャッシュされていたと思います。

そこで、スクリプトの最初と最後で、さまざまなメッセージを出力するように変更しました。そして、驚いたことに、メッセージは両方の端末に表示されました。それでも、&lt;の違いは同じです。および<。

私は混乱しています...その振る舞いをどのように説明しますか?私はOSX10.8(Mountain Lion)に取り組んでいます

編集:わかりました。大きな違いが1つあります。下のシェルはruby 1.9.3を使用していますが、上のシェルは1.8.7です。2つのバージョン間で文字列処理に既知の違いはありますか?

4

1 に答える 1

1

htmlentities ライブラリを使用していますか? もしそうなら、このバグ修正はおそらくあなたが見ているものです

Ruby 1.9.3 の動作は 1.9.2 とは少し異なります。encode の結果は、ASCII 文字しか含まれていない場合でも ASCII ではありませんでした。これは重要ではないかもしれませんが、この変更により、両方のバージョンで同じ結果が生成されます。

https://github.com/threedaymonk/htmlentities/commit/46dafc959de03a02d0c1705bef7f1b157b350025

于 2012-09-01T20:50:45.607 に答える