Ignorar iconv :: Securencia ilegal mientras usa ruby www :: mecanizar
Pregunta
Me he encontrado con el error Iconv :: IlegalSequence en algunas páginas web al usar mecanizar lib. ¿Hay alguna manera de hacer que la mecanización solo omita los personajes codificados y devolver la página de "cortar"? Soy consciente del hilo relacionado, pero prefiero descartar algunos personajes en la página, luego volver a implementar la codificación de adivinanzas. TIA
Solución
La solución es cambiar la línea 40 en Util.rb desde
Iconv.iconv(code, "UTF-8", s).join("")
a
Iconv.iconv("#{code}//IGNORE", "UTF-8", s).join("")
o
Iconv.conv("#{code}//IGNORE", "UTF-8", s)
Otros consejos
Una mejor solución no es cambiar la fuente de Util.RB, pero agregar su propio código algo así:
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
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow