ruby www :: mechanize를 사용하는 동안 iconv :: 불법 시속 사항을 무시하십시오.
문제
Mechanize Lib를 사용할 때 일부 웹 페이지에서 iconv :: 불법 시퀀스 오류가 발생했습니다. 기계화가 나쁜 인코딩 된 문자를 생략하고 "컷"페이지를 반환 할 수있는 방법이 있습니까? 나는 알고있다 관련 스레드, 그러나 나는 페이지에서 일부 문자를 버리고 추측을 인코딩하는 것을 다시 구현하고 싶습니다. 티아
해결책
해결책은 Util.rb에서 40 행을 변경하는 것입니다.
Iconv.iconv(code, "UTF-8", s).join("")
에게
Iconv.iconv("#{code}//IGNORE", "UTF-8", s).join("")
또는
Iconv.conv("#{code}//IGNORE", "UTF-8", s)
다른 팁
더 나은 솔루션은 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
}
제휴하지 않습니다 StackOverflow