VB inet을 이용한 UTF-8 소스 읽어오기
페이지 정보
작성자
본문
Private Declare Sub RtlMoveMemory Lib "kernel32" ( _
ByRef Destination As Any, _
ByRef Source As Any, _
ByVal Length As Long _
)
Private Declare Function MultiByteToWideChar Lib "kernel32.dll" (ByVal CodePage As Long, ByVal dwFlags As Long, ByRef lpMultiByteStr As Any, ByVal cbMultiByte As Long, ByRef lpWideCharStr As Any, ByVal cchWideChar As Long) As Long
Private Const CP_UTF8 As Long = 65001
Private Const CHUNK_SIZE& = 4096&
Private Function OpenURLWithIE2(ByVal URL As String, ByRef Inet As Inet) As String
'-- 제작자 : 수학쟁이(startgoora)
'-- 수정자 : 축복(q_death)
Dim TotBuf() As Byte, ChunkedBuf() As Byte, Converted() As Byte, ni As Long
With Inet
.Cancel
.URL = URL
.Execute , "GET", inputhdrs:="User-agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)" & vbCrLf
Do While .StillExecuting
DoEvents
Loop
ChunkedBuf() = .GetChunk(CHUNK_SIZE, icByteArray)
Do While UBound(ChunkedBuf) >= 0
ni = ni + UBound(ChunkedBuf) + 1
ReDim Preserve TotBuf(ni - 1)
RtlMoveMemory TotBuf(ni - UBound(ChunkedBuf) - 1), ChunkedBuf(0), UBound(ChunkedBuf) + 1&
ChunkedBuf() = .GetChunk(CHUNK_SIZE, icByteArray)
Loop
End With
Dim lSize As Long
lSize = MultiByteToWideChar(CP_UTF8, 0&, TotBuf(0), UBound(TotBuf) + 1&, ByVal 0&, 0&)
ReDim Converted(lSize * 2 - 1)
MultiByteToWideChar CP_UTF8, 0&, TotBuf(0), UBound(TotBuf) + 1&, Converted(0), lSize
OpenURLWithIE2 = Converted
End Function
댓글목록
등록된 댓글이 없습니다.