2010-11-01 2 views
1

В настоящее время я тестирую скрипт ruby, который использует механизацию с ruby ​​1.9.2 (пакеты Ubuntu Lucid).Как избежать кодирования :: СовместимостьError с ruby ​​1.9 и механизировать форму submit?

Первая строка устанавливает следующие параметры:

#!/usr/bin/env ruby -KU 

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

/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?

ответ

1

Ну, похоже, ошибка в версии механизации 0.9.3 (возможно, issue 25). Использование the current git version of mechanize устраняет проблемы с отправкой для меня.

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