4

mechanize lib を使用しているときに、一部の Web ページで Iconv::IllegalSequence エラーが発生しました。正しくエンコードされていない文字を省略して「カット」ページを返すように機械化する方法はありますか? 関連するスレッドは認識していますが、ページ上の一部の文字を破棄してから、エンコーディングの推測を再実装したいと考えています。ティア

4

2 に答える 2

6

解決策は、util.rb の 40 行目を次のように変更することです。

Iconv.iconv(code, "UTF-8", s).join("")

Iconv.iconv("#{code}//IGNORE", "UTF-8", s).join("")

また

Iconv.conv("#{code}//IGNORE", "UTF-8", s)
于 2009-08-26T13:13:21.073 に答える
1

より良い解決策は、util.rb のソースを変更するのではなく、次のような独自のコードを追加することです。

Mechanize::Util.send(:define_method, 'self.encode_to' ) { |*args|
  encoding = args[0]
  str = args[1]

  if NEW_RUBY_ENCODING
    str.encode(encoding)
  else
    Iconv.conv(encoding.to_s + '//IGNORE', "UTF-8", str)
  end

}
于 2012-12-10T11:20:49.807 に答える