Я столкнулся с ошибкой Iconv :: IllegalSequence на некоторых веб-страницах при использовании mechanize lib. Есть ли способ заставить механизировать просто пропустить плохо закодированные символы и вернуть «вырезанную» страницу? Я знаю о связанной теме , но я бы предпочел отбросить некоторые символы на странице, а затем заново реализовать кодирование. ТИА
Решение состоит в том, чтобы изменить строку 40 в util.rb с
Iconv.iconv(code, "UTF-8", s).join("")
до
Iconv.iconv("#{code}//IGNORE", "UTF-8", s).join("")
или
Iconv.conv("#{code}//IGNORE", "UTF-8", s)
Лучшее решение - не менять источник 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 }