Как избежать Encoding::CompatibilityError с ruby ​​1.9 и механизировать отправку формы?

В настоящее время я тестирую ruby-скрипт, использующий chanize с ruby ​​1.9.2 (пакеты Ubuntu Lucid).

В первой строке задаются следующие параметры:

#!/usr/bin/env ruby -KU

Некоторые механические почтовые индексы вызывают следующее исключение:

/usr/lib/ruby/1.9.1/www/mechanize/form.rb:222:in `join': incompatible character encodings: ISO-8859-1 and ASCII-8BIT (Encoding::CompatibilityError)
    from /usr/lib/ruby/1.9.1/www/mechanize/form.rb:222:in `request_data'
    from /usr/lib/ruby/1.9.1/www/mechanize.rb:401:in `post_form'
    from /usr/lib/ruby/1.9.1/www/mechanize.rb:344:in `submit'
    from /usr/lib/ruby/1.9.1/www/mechanize/form.rb:130:in `submit'

Mechanize используется в исходной программе следующим образом:

# f is a Mechanize::Page object
final = f.form('final')
  f.form('final') { |x|
f.form('final') { |x|
  x.user == user
  # ... 
}
a = final.submit

Заполняемые данные (например, пользователь) считываются с диска через объекты File.new() и через объекты Nokogiri, которые анализируют объекты File.

Печать данных на консоль не показывает очевидных проблем с кодировкой.

Таким образом, мой вопрос: как исправить эту проблему с кодировкой при публикации данных формы с помощью механизма?

Должен ли я указывать механизации, какую кодировку символов использовать для http POST?


person maxschlepzig    schedule 01.11.2010    source источник


Ответы (1)


Что ж, похоже на ошибку в версии mechanize 0.9.3 (вероятно, issue 25< /а>). Использование текущей git-версии mechanize устраняет проблемы с публикацией.

Но версия chanize 1.0 также должна включать исправление.

person maxschlepzig    schedule 01.11.2010