【问题标题】:Ignore Iconv::IllegalSequence while using Ruby WWW::Mechanize使用 Ruby WWW::Mechanize 时忽略 Iconv::IllegalSequence
【发布时间】:2009-08-21 13:16:01
【问题描述】:

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

【问题讨论】:

    标签: ruby mechanize


    【解决方案1】:

    解决方法是将 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)
    

    【讨论】:

    【解决方案2】:

    更好的解决方案不是更改 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
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-21
      • 2011-10-11
      • 2017-12-25
      • 1970-01-01
      • 1970-01-01
      • 2012-03-25
      • 2016-04-12
      • 2012-08-10
      相关资源
      最近更新 更多