4

使用 mechanize lib 时,我在某些网页上遇到了 Iconv::IllegalSequence 错误。有没有办法让机械化只是省略错误编码的字符并返回“剪切”页面?我知道相关的线程,但我宁愿丢弃页面上的一些字符,然后重新实现编码猜测。TIA

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 回答