2010-11-10 31 views
0

Je veux lire cette forme d'un script PHP en utilisant Ruby/Mechanize:Ruby/Mechanize avorte quand il trouve une lettre u accentuée

<form name="editevent" method="post" action="/index.php" enctype="multipart/form-data"> 
    <input type="text" name="veranstaltung"> 
    <select name='ortid'> 
    <option value='2'>Kaminwerk</option> 
    <option value='3'>Pitú</option> 
    <option value='4'>Apollo-Center</option> 
    </select> 
     <input type="text" name="neutermin" id="neutid" /> 
    <textarea name="beschreibung" cols="40" rows="7"></textarea><br /> 
     <input type="submit" name="button" value="Absenden"> 
</form> 

Dans Ruby, j'ai:

form = page.forms.first 
form.fields.each { |f| puts f.name } 

Cependant Ruby peut trouver seulement les éléments de formulaire avec le nom "veranstaltung" et "ortid"

J'ai découvert que le problème est la lettre "u" avec l'accent sur elle dans le mot "Pitú". Proofs: quand j'imprimer le inner_html du code html la partie de la forme ressemble à ceci:

<form name="editevent" method="post" action="/index.php" enctype="multipart/form-data"> 
     <input type="text" name="veranstaltung"> 
     <select name='ortid'> 
     <option value='2'>Kaminwerk</option> 
     <option value='3'>Pit</form> 

L'autre partie de la forme a disparu! Comment puis-je utiliser complètement ce formulaire malgré le "ú"? Je serais très heureux si quelqu'un pouvait aider.

Répondre

0

Quelle version de Ruby? Ça sent comme 1.8.7, ce qui n'est pas Unicode savvy. Si vous le pouvez, passez à la version 1.9.2.

Il est également important de spécifier l'ensemble de codes de la langue lors de l'analyse du contenu. Souvent, cette information est dans la déclaration DOCTYPE, mais si ce n'est pas le cas, vous devez donner à la langue un indice de ce à quoi s'attendre. Parce que ces caractères sont intégrés dans PHP, ils pourraient être UTF-8, ou peut-être une variante de WIN-1252 ou ISO-8951 qui implique qu'ils seraient un caractère d'un seul octet. Mechanize utilise Nokogiri pour analyser, et il voudra savoir quelle est la langue pour vous donner le meilleur décodage des valeurs. Nokogiri va mettre des erreurs dans l'attribut errors quand il ne peut pas analyser quelque chose à son goût, donc vous pourriez vouloir vérifier là. Donc, si j'étais vous, je regarderais pour voir ce que le DOCTYPE est quand le contenu est envoyé, et vérifie également les en-têtes HTTP, et vois si quelque chose va définir le jeu de codes.

Ceci est un problème que j'ai rencontré plusieurs fois sur Internet parce que le langage HTML est si mal écrit et ne parvient pas à suivre les spécifications.