2009-08-21 4 views
4

기계화 라이브러리를 사용할 때 일부 웹 페이지에서 Iconv :: IllegalSequence 오류가 발생했습니다. 기계화로 인코딩 된 문자를 생략하고 "잘린"페이지를 반환하는 방법이 있습니까? 내가 related thread을 알고 있지만 페이지의 일부 문자를 버리고 인코딩을 다시 구현한다고 추측합니다. TIARuby를 사용하는 동안 Iconv :: IllegalSequence 무시 WWW :: Mechanize

+0

대단히 감사합니다. –

답변

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 

} 
관련 문제