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
|