2010-11-01 18 views
1

Actuellement, je teste un script ruby ​​qui utilise mechanize avec ruby ​​1.9.2 (paquets Ubuntu Lucid).Comment éviter l'encodage :: CompatibilityError avec ruby ​​1.9 et le formulaire mécanize submit?

La première ligne définit les options suivantes:

#!/usr/bin/env ruby -KU 

Certains code postal de mécaniser déclenche une exception près:

/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 est utilisé comme dans le programme source:

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

Les données renseignées (par exemple l'utilisateur) sont lues à partir du disque via les objets File.new() et via Nokogiri- objets qui analysent les objets File.

L'impression des données sur la console n'affiche pas de problèmes de configuration évidents.

Ainsi ma question: Comment résoudre ce problème de codage lors de la publication de données de formulaire en utilisant mécaniser? Dois-je dire à mécaniser quel encodage de caractères utiliser pour les POST http?

Répondre

1

Eh bien, ressemble à un bug dans la version 0.9.3 de mécaniser (probablement issue 25). L'utilisation de the current git version of mechanize corrige les problèmes de publication pour moi.

Mais une version de mécanisation 1.0 devrait également inclure le correctif.