2013-06-08 2 views
0

Qt 또는 PyQt에 의해 웹 페이지 소스 코드를 얻고 싶습니다. 인코딩 된 소스 코드를 얻는 방법을 알고 있습니다. 그런 다음 코덱을 일반 텍스트로 변환해야하므로 문제가 문자를 감지하는 방법입니다. 프로그래밍 방식으로 웹 페이지의 인코딩? 아무도 도와 드릴까요?프로그래밍 방식으로 웹 페이지의 문자 인코딩을 검색하는 방법은 무엇입니까?

이 페이지는 UTF8 http://www.flvxz.com/getFlv.php?url=aHR0cDojI3d3dy41Ni5jb20vdTk1L3ZfT1RFM05UYzBNakEuaHRtbA==

에 의해 인코딩되며,이 하나 http://www.qnwz.cn/html/yinlegushihui/magazine/2013/0524/425731.html

이 2 페이지에서 테스트해야합니다 당신의 대답은

+0

문자 인코딩을 탐지하는 것은 언제나 발견 가능하고 허약 한 활동입니다. (가장 일반적인 경우에는 불가능합니다. 인코딩이 의도적으로 다른 인코딩과 같은/보았거나/암호화 된 것이라면 어떻게 될까요?) 병리학적인 것 외에도 많은 인코딩이 매우 유사합니다. 행운을 빕니다. – jpaugh

답변

0

당신은 QTextCodec::codecForHtml 정적 기능을 사용할 수 있습니다 GB2312

에 의해 인코딩 .

는 BOM (바이트 순서 마크) 및 콘텐츠 형 메타 헤더를 ​​검사하여 상기 지정된 바이트 어레이 (BA)에 HTML의 제공된 조각의 인코딩을 검출하도록 시도하고있는 QTextCodec 인스턴스를 리턴 유니 코드로 HTML을 디코딩 할 수 있습니다. 제공된 콘텐츠에서 코덱을 찾을 수없는 경우 defaultCodec가 반환됩니다.

인코딩 메타 태그가없는 페이지에는 작동하지 않습니다. 예를 들어 게시 한 첫 번째 링크에는 인코딩 태그가 없습니다 (HTML이 아니므로 태그가 없어야 함). 인코딩은 'Content-type'이라는 HTTP 헤더에 지정됩니다. 그 가치를 확인해야합니다. Qt를 사용하여 페이지를 다운로드하는 경우 QHttpHeader::contentType을 사용하여 검색 할 수 있습니다.

0

마지막으로, 나는 PyQt는의 QtextStream, QTextCodec 및 chardet를 사용하여 발견, 우리는 웹 페이지 코드를 얻을 수보다 안전하게
도이 잘못된 페이지 http://www.qnwz.cn/html/yinlegushihui/magazine/2013/0524/425731.html

이 스크립트 http://www.flvxz.com/getFlv.php?url=aHR0cDojI3d3dy41Ni5jb20vdTk1L3ZfT1RFM05UYzBNakEuaHRtbA==

이 페이지에 대한 그 소스 코드에 chardet이 없다. http://msdn.microsoft.com/en-us/library/bb802962(v=office.12).aspx

코드는 여기에있다 https://groups.google.com/d/msg/comp.lang.python/8_1oNMidxzE/zMztIlE3mAYJ

관련 문제