機械化されたlibを使用すると、一部のWebページでIconv :: IllegalSequenceエラーが発生しました。機械化して、エンコードされた文字を省略し、「切り取った」ページを返す方法はありますか?私はrelated threadを知っていますが、私はむしろページ上のいくつかの文字を破棄して、エンコーディング推測を再実装したいと思います。 TIARubyを使用中にIconv :: IllegalSequenceを無視します。WWW :: Mechanize
が
4
A
答えて
6
溶液を
Iconv.iconv("#{code}//IGNORE", "UTF-8", s).join("")
又は
Iconv.conv("#{code}//IGNORE", "UTF-8", s)
+0
混合エンコードには '// TRANSLIT // IGNORE'を使うことも考えてください。 チェックhttps://github.com/zdavatz/spreadsheet/issues/17および http://ruby.11.x6.nabble.com/Reliable-character-encodings-conversion-td3332842.html – Khaled
1
よりよい解決策に
Iconv.iconv(code, "UTF-8", s).join("")
からutil.rbにライン40を変更することであるutil.rbのソースを変更されていません自分のコードに次のようなコードを追加してください:
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
}
関連する問題
ありがとうございました! –