Как избежать Encoding :: CompatibilityError с ruby ​​1.9 и механизировать отправку формы? - PullRequest
1 голос
/ 01 ноября 2010

В настоящее время я тестирую скрипт ruby, который использует mechanize с 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'

Механизм используется так же, как в исходной программе:

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

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

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

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

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

1 Ответ

1 голос
/ 02 ноября 2010

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

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

...