Ignorar iconv :: Securencia ilegal mientras usa ruby ​​www :: mecanizar

StackOverflow https://stackoverflow.com/questions/1311879

  •  19-09-2019
  •  | 
  •  

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

¿Fue útil?

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
scroll top