웹 브라우저의 인코딩 결정에 관해 질문 드립니다~ㅜㅜ

forglee의 이미지

안녕하세요.

저는 최근 크롤러를 개발해보고 있습니다.

크롤러 작동과정은

HttpSocket을 이용해서 웹페이지를 요청하면

HttpSocket내의 HttpParser가 HttpHeader를 분석하고 HttpBody(문서내용)를 저장합니다.

이 저장된 문서를 HtmlParser에 넣고 원하는 작업을 시작하려 하는데

인코딩 문제가 매우 골치아픈듯합니다.

현재 HttpParser에서 헤더 분석후 charset을 보고 적절한 형태로 변형해서 쓰고있습니다. 그런데 문제가 있습니다.

HTTP Response Header 를 보면

HTTP/1.1 200 OK
....
...
Content-Type: text/html; charset=UTF-8
.....

이런식으로 전달되어옵니다.

그러면 charset를 보고 이문서는 UTF-8이구나 하고 적절히 해석을 하면되는데

간혹 어떤 페이지는 Content-Type: text/html 만 있는경우가 있습니다.

이 경우는 문서의 인코딩을 어떻게 결정하나요?

html의 header를 분석해서 결정해야되나요?
header에도 명시해주지 않는 페이지 경우에는 어찌할까요?.????

danskesb의 이미지

HTTP 응답 헤더에 없으면 html 문서 자체를 보고 분석합니다. 거기에도 없다면 인코딩을 "추측"합니다. 인코딩 추측 방식은 웹 브라우저마다 다르며, 간편하게 사용할 수 있는 것으로 모질라에서 개발한 chardet 라이브러리가 있습니다.

forglee의 이미지

감사합니다.^^

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.