Механизировать Iconv :: IllegalSequence при попытке сформировать POST-запрос - PullRequest
3 голосов
/ 24 августа 2009

следующий код вызывает вышеупомянутую ошибку, как я могу это исправить?

require 'mechanize'
m = WWW::Mechanize.new
p = m.get('http://art-mobile.com.ua/register.php')
f = p.forms.first
f.submit(f.buttons.last)

На всякий случай, вот полное описание ошибки на моей коробке

D:/ruby/lib/ruby/gems/1.9.1/gems/mechanize-0.9.3/lib/www/mechanize/util.rb:40:in `iconv': "Ðåãèñòðàöèÿ"... (Iconv::IllegalSequence)
    from D:/ruby/lib/ruby/gems/1.9.1/gems/mechanize-0.9.3/lib/www/mechanize/util.rb:40:in `from_native_charset'
    from D:/ruby/lib/ruby/gems/1.9.1/gems/mechanize-0.9.3/lib/www/mechanize/form.rb:152:in `from_native_charset'
    from D:/ruby/lib/ruby/gems/1.9.1/gems/mechanize-0.9.3/lib/www/mechanize/form.rb:144:in `block in proc_query'
    from D:/ruby/lib/ruby/gems/1.9.1/gems/mechanize-0.9.3/lib/www/mechanize/form.rb:143:in `map'
    from D:/ruby/lib/ruby/gems/1.9.1/gems/mechanize-0.9.3/lib/www/mechanize/form.rb:143:in `proc_query'
    from D:/ruby/lib/ruby/gems/1.9.1/gems/mechanize-0.9.3/lib/www/mechanize/form.rb:198:in `block in build_query'
    from D:/ruby/lib/ruby/gems/1.9.1/gems/mechanize-0.9.3/lib/www/mechanize/form.rb:197:in `each'
    from D:/ruby/lib/ruby/gems/1.9.1/gems/mechanize-0.9.3/lib/www/mechanize/form.rb:197:in `build_query'
    from D:/ruby/lib/ruby/gems/1.9.1/gems/mechanize-0.9.3/lib/www/mechanize/form.rb:214:in `request_data'
    from D:/ruby/lib/ruby/gems/1.9.1/gems/mechanize-0.9.3/lib/www/mechanize.rb:401:in `post_form'
    from D:/ruby/lib/ruby/gems/1.9.1/gems/mechanize-0.9.3/lib/www/mechanize.rb:344:in `submit'
    from D:/ruby/lib/ruby/gems/1.9.1/gems/mechanize-0.9.3/lib/www/mechanize/form.rb:130:in `submit'
    from D:/doer.rb:8:in `<main>'

И кстати это решение не работает

1 Ответ

0 голосов
/ 26 августа 2009

Похоже, что решение состоит в том, чтобы немного переписать гем, чтобы он преобразовывал кодировку страницы в utf-8 при инициализации новой страницы, изменяя @encoding var на utf-8 и сохраняя исходную кодировку в другом файле, и внесение изменений, необходимых для того, чтобы заставить камень использовать оригинальную кодировку при формировании запроса

...