Scrapbook/개발 및 프로그래밍

ServerXMLHTTP의 인코딩 문제

가을이짱짱 2004. 8. 6. 11:44
반응형

[정상적으로 동작하는 샘플 예제]

 

<%@ Language=VBScript %>

<%

' 네이버에서 날씨정보 가져오기

Set xmlClient = CreateObject("MSXML2.ServerXMLHTTP.4.0")

xmlClient.open "GET", "http://news.naver.com/weather/", False

xmlClient.send

 

' ADO의 스트림 객체로 처리하기

' [이유] responseText 프라퍼티는 리모트의 응답을 무조건 유니코드로 간주하고 디코딩하므로

' 유니코드로 인코딩되지 않은 것들은 모두 글자가 깨짐

' 따라서 이러한 경우에는 responseText를 직접 사용할 수가 없기 때문에

' 리모트의 응답을 디코딩되지 않은 형태로 받아(responseBody 프라퍼티를 사용하면 됨)

' 적절한 인코딩으로 변환한 뒤에 사용하기 위해 ADO의 스트림 객체로 처리함

Set responseStrm = CreateObject("ADODB.Stream")

responseStrm.Open

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

responseStrm.Position = 0

' 먼저 스트림 객체의 타입을 바이너리 타입으로 지정

responseStrm.Type = 1

responseStrm.Write xmlClient.responseBody

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

responseStrm.Position = 0

' 이번에는 스트림 객체의 타입을 텍스트 타입으로 지정

responseStrm.Type = 2

' 원하는 인코딩 이름을 지정

responseStrm.Charset = "euc-kr"

resultStr = responseStrm.ReadText

 

Response.Write resultStr

Response.End

 

responseStrm.Close

Set responseStrm = Nothing

Set xmlClient = Nothing

%>

반응형