ruby www :: mechanize를 사용하는 동안 iconv :: 불법 시속 사항을 무시하십시오.

StackOverflow https://stackoverflow.com/questions/1311879

  •  19-09-2019
  •  | 
  •  

문제

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

}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top