inet控件openurl方法乱码问题

Eddy 发布于2010-7-11 14:20:0 分类: 程序设计 已浏览loading 网友评论0条 我要评论

这是网页编码问题引起的,如果是utf-8编码,则返回的网页源码会显示为乱码。

解决办法就是先将utf-8编码转为unicode编码,然后再显示。代码如下:

Option Explicit

Private Sub Command1_Click()
Dim a() As Byte
a() = Inet1.OpenURL("www.rrgod.com", 1)
Text1 = Utf8ToUnicode(a())
End Sub

'StrConv(strUtf8, vbFromUnicode)
Private Function Utf8ToUnicode(ByRef Utf() As Byte) As String
    Dim utfLen As Long
   
    utfLen = -1
    On Error Resume Next
    utfLen = UBound(Utf)
    If utfLen = -1 Then Exit Function
   
    On Error GoTo 0
   
    Dim i As Long, j As Long, k As Long, N As Long
    Dim B As Byte, cnt As Byte
    Dim Buf() As String
    ReDim Buf(utfLen)
   
    i = 0
    j = 0
    Do While i <= utfLen
        B = Utf(i)
       
        If (B And &HFC) = &HFC Then
            cnt = 6
        ElseIf (B And &HF8) = &HF8 Then
            cnt = 5
        ElseIf (B And &HF0) = &HF0 Then
            cnt = 4
        ElseIf (B And &HE0) = &HE0 Then
            cnt = 3
        ElseIf (B And &HC0) = &HC0 Then
            cnt = 2
        Else
            cnt = 1
        End If
       
        If i + cnt - 1 > utfLen Then
            Buf(j) = "?"
            Exit Do
        End If
       
        Select Case cnt
        Case 2
            N = B And &H1F
        Case 3
            N = B And &HF
        Case 4
            N = B And &H7
        Case 5
            N = B And &H3
        Case 6
            N = B And &H1
        Case Else
            Buf(j) = Chr(B)
            GoTo Continued:
        End Select
               
        For k = 1 To cnt - 1
            B = Utf(i + k)
            N = N * &H40 + (B And &H3F)
        Next
       
        Buf(j) = ChrW(N)
Continued:
        i = i + cnt
        j = j + 1
    Loop
   
    Utf8ToUnicode = Join(Buf, "")
End Function

已经有(0)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/program/425.html     欢迎订阅Eddy Blog

记住我的信息,下次不用再输入 欢迎给Eddy Blog留言