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