Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用Ruby WWW::Mechanize时忽略Iconv::IllegalSequence_Ruby_Mechanize - Fatal编程技术网

在使用Ruby WWW::Mechanize时忽略Iconv::IllegalSequence

在使用Ruby WWW::Mechanize时忽略Iconv::IllegalSequence,ruby,mechanize,Ruby,Mechanize,在使用mechanize库时,我在某些网页上遇到了Iconv::IllegalSequence错误。有没有办法让mechanize忽略编码错误的字符并返回“剪切”页面?我知道,但是我宁愿放弃页面上的一些字符,然后重新实现编码猜测。TIA解决方案是将util.rb中的第40行从 Iconv.iconv(code, "UTF-8", s).join("") 到 或 更好的解决方案不是更改util.rb的源代码,而是在您自己的代码中添加如下内容: Mechanize::Util.send(:defi

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

解决方案是将util.rb中的第40行从

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


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

}

同时考虑使用<代码> // TRANSLIT /忽略< /代码>进行混合编码。检查和
Iconv.conv("#{code}//IGNORE", "UTF-8", s)
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

}