大口九珍珠奶茶加盟:inet 完美UTF8解码为GB2312

来源:百度文库 编辑:偶看新闻 时间:2024/04/24 17:57:53

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

    Utf8To