상세 컨텐츠

본문 제목

ServerXMLHTTP의 인코딩 문제

프로그래밍/JAVA

by 라제폰 2009. 3. 6. 19:33

본문

<%
    Dim objSrvHTTP
    Dim targetUrl
    Dim objAdoStream
    Dim tour_name

 

    targetUrl = "http://news.naver.com/weather/"
   
    Set objSrvHTTP = CreateObject("MSXML2.ServerXMLHTTP.4.0")
    objSrvHTTP.open "GET", targetUrl, False
    objSrvHTTP.send

 

    ' ADO의 스트림 객체로 처리하기
    ' [이유] responseText 프라퍼티는 리모트의 응답을 무조건 유니코드로 간주하고 디코딩하므로
    ' 유니코드로 인코딩되지 않은 것들은 모두 글자가 깨짐
    ' 따라서 이러한 경우에는 responseText를 직접 사용할 수가 없기 때문에
    ' 리모트의 응답을 디코딩되지 않은 형태로 받아(responseBody 프라퍼티를 사용하면 됨)
    ' 적절한 인코딩으로 변환한 뒤에 사용하기 위해 ADO의 스트림 객체로 처리함
    Set objAdoStream = CreateObject("ADODB.Stream")
    objAdoStream.Open

 

    ' 스트림 객체의 타입을 변경하기 위해선 먼저 스트림의 현재 포지션을 처음으로 지정해야만 됨.
    objAdoStream.Position = 0

 

    ' 먼저 스트림 객체의 타입을 바이너리 타입으로 지정
    objAdoStream.Type = 1
    objAdoStream.Write objSrvHTTP.responseBody

 

    ' 다시 스트림 객체의 타입을 변경하기 위해 현재 포지션을 처음으로 지정
    objAdoStream.Position = 0

 

    ' 이번에는 스트림 객체의 타입을 텍스트 타입으로 지정
    objAdoStream.Type = 2

 

    ' 원하는 인코딩 이름을 지정
    objAdoStream.Charset = "euc-kr"

 

    resultStr = objAdoStream.ReadText

 

    Response.Write resultStr
    Response.End

 

    objAdoStream.Close
    Set objAdoStream    = Nothing
    Set objSrvHTTP      = Nothing
%>


관련글 더보기