2009-08-21 6 views
4

Ich habe den Iconv :: IllegalSequence Fehler auf einigen Webseiten bei der Verwendung von Mechanize lib gefunden. Gibt es eine Möglichkeit, Mechanisierung zu machen, einfach nur schlecht kodierte Zeichen wegzulassen und die "Schnitt" -Seite zurückzugeben? Ich bin mir der related thread bewusst, aber ich würde lieber einige Zeichen auf der Seite verwerfen und dann das Erraten der Codierung erneut implementieren.Ignore Iconv :: IllegalSequence bei der Verwendung von Ruby WWW :: Mechanize

TIA
+0

Vielen Dank! –

Antwort

6

Die Lösung ist mit der Leitung 40 in util.rb von

zu ändern
Iconv.iconv(code, "UTF-8", s).join("") 

zu

Iconv.iconv("#{code}//IGNORE", "UTF-8", s).join("") 

oder

Iconv.conv("#{code}//IGNORE", "UTF-8", s) 
+0

Verwenden Sie auch '// TRANSLIT // IGNORE' für die gemischte Codierung. überprüfen Sie https://github.com/zdavatz/spreadsheet/issues/17 und http://ruby.11.x6.nabble.com/Reliable-character-encodings-conversion-td3332842.html – Khaled

1

bessere Lösung ändert sich nicht Quelle util.rb , aber fügen Sie in Ihrem eigenen Code so etwas hinzu:

Mechanize::Util.send(:define_method, 'self.encode_to') { |*args| 
    encoding = args[0] 
    str = args[1] 

    if NEW_RUBY_ENCODING 
    str.encode(encoding) 
    else 
    Iconv.conv(encoding.to_s + '//IGNORE', "UTF-8", str) 
    end 

} 
Verwandte Themen