0

同じコードを実行している 2 つの開発者マシンを見ています。コードは Web サービスを呼び出し、nokogiri (両方のマシンで v1.5.5) を使用して解析し、結果をビューに表示します。

Ubuntu 12.04 と jruby 1.7 を実行している 1 台のマシンでは、期待どおりの結果が表示されます。

もう 1 つは、Windows 7 と jruby 1.7 を実行しており、文字エンコーディングを文字化けします (結果として???、期待される出力ではなく、大量の が発生します)。

両方が同じ jruby リリースとまったく同じアプリケーション コードを使用していることを確認したので、これは基盤となる JVM 実装と関係があるのではないかと疑っています。

この問題を追跡するにはどうすればよいですか? これを jruby のバグと呼ぶのは適切でしょうか?

4

1 に答える 1

0

コードが両方のマシンで同じである場合、バンドルされているgemのいずれかがそのコードとWindowsで互換性がない可能性があります。また、Ubuntuからコードを移動した後、Windows上のgemに関連するこのような問題の多くに以前直面しました。

Ubuntuでは、gemsのsudo installコマンドはgemと依存関係を独自にインストールしますが、Windowsでは、依存関係のあるgemインストールを手動でインストールする必要があります。

Windows上のgemの互換性の問題を確認してください。さらに、以前は問題なくWindowsのアプリケーションでnokogiriを使用していたため、jrubyがバグの原因であると思われます。

さらに、(おそらくIconvNokogiriを介して)さまざまなエンコーディングを処理するためのいくつかの機能がありますが、私はそれを少し練習していません。

ではNokogiri、文字列は常にUTF-8として内部に格納されます。テキスト値を返すメソッドは、常にUTF-8でエンコードされた文字列を返します。XMLを返すメソッド(to_xml、to_html、inner_htmlなど)は、ソースドキュメントのようにエンコードされた文字列を返します。

Nokogiriでドキュメントのエンコードを適切に処理する場合は、エンコードを明示的に設定することをお勧めします。

また、[ウィンドウで]をオンにします。通常のテキストまたはHTMLドキュメントを解析した場合でも、同じ動作を示しますか?好き:

irb(main):017:0> Nokogiri :: HTML.fragment(''、'utf-8')。text

irb(main):017:0> Nokogiri.HTML('').at_css('body')。content

これも役立つかもしれません-http://nokogiri.org/また、JRubyでの開発の見出しも確認してください。

于 2012-12-05T09:29:23.503 に答える