쓸만한 주저리

외부 Server의 XML 가져오기(PHP -> ASP)

봄돌73 2010. 11. 5. 15:05

  function bintotext(varbindata,intdatasizeinbytes) ' as string

    dim rs

    const adfldlong=&h00000080

    const advarchar=200

    set rs=createobject("adodb.recordset")

    rs.fields.append "txt",advarchar,intdatasizeinbytes,adfldlong

    rs.open

    rs.addnew

    rs.fields("txt").appendchunk varbindata

    bintotext=rs("txt").value

    rs.close

    set rs=nothing

  end function


  dim return,xmlhttp

  set xmlhttp=server.createobject("microsoft.xmlhttp")

  xmlhttp.open "get",url,false

  xmlhttp.send

  if xmlhttp.status=200 then

    return=xmlhttp.responsebody

    return=bintotext(return,len(return))

  else

    return="fail"

  end if

  set xmlhttp=nothing


  dim fso,file

  set fso=server.createobject("scripting.filesystemobject")

  set file=fso.opentextfile(server.mappath(".") & "\" & filename,2,true)

  file.write return

  file.close

  set fso=nothing



위 함수(bintotext, 출처 : http://blog.naver.com/icanfind?Redirect=Log&logNo=110004613812)를 사용하면 Binary로 받아온 Text를 UTF-8로 변환할 수 있다.

변환한 Text를 저장하면 끝.


처음에는 저장이 안되는 이유가 문자열이 너무 길어서 그런 줄 알았다.

left(str,100)하면 저장이 되었으니까.

나중에 한글 형식의 문제라는 걸 알고 얼마나 허탈했는지...


저장할 때 set file=fso.opentextfile(server.mappath(".") & "\" & filename,2,true,-1)을 사용해야 PHP에서 가져온 Text를 저장할 수 있지만

ULE라는 포맷으로 저장이 되어서 정작 브라우저에서는 UTF-8로 인식을 못한다.

그래서 열심히 뒤진 결과 Binary로 가져와서 Text로 변환하는 방법이 있어서 써 봤더니 정상적으로 UTF-8로 저장이 되었다.