加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

VB不使用 API,将 Utf8 转换为 Unicode

发布时间:2020-12-16 23:09:55 所属栏目:大数据 来源:网络整理
导读:Private Function Utf8ToUni(B() As Byte) As String '不使用 API,将 Utf8 转换为 Unicode Dim BU As Long On Error Resume Next BU = -1: BU = UBound(B) If BU = -1 Then Exit Function On Error GoTo 0 Dim I As Long,K As Long,N As Long Dim B1 As Byt

Private Function Utf8ToUni(B() As Byte) As String '不使用 API,将 Utf8 转换为 Unicode Dim BU As Long On Error Resume Next BU = -1: BU = UBound(B) If BU = -1 Then Exit Function On Error GoTo 0 Dim I As Long,K As Long,N As Long Dim B1 As Byte,cnt As Byte I = LBound(B) If BU > I + 1 Then If B(I) = 239 And B(I + 1) = 187 And B(I + 2) = 191 Then I = I + 3 '去掉前三个字符 End If Do If I > BU Then Exit Do B1 = B(I) If (B1 And &HFC) = &HFC Then cnt = 6 ElseIf (B1 And &HF8) = &HF8 Then cnt = 5 ElseIf (B1 And &HF0) = &HF0 Then cnt = 4 ElseIf (B1 And &HE0) = &HE0 Then cnt = 3 ElseIf (B1 And &HC0) = &HC0 Then cnt = 2 Else cnt = 1 End If If I + cnt - 1 > BU Then Utf8ToUni = Utf8ToUni & "?": Exit Do Select Case cnt Case 2: N = B1 And &H1F Case 3: N = B1 And &HF Case 4: N = B1 And &H7 Case 5: N = B1 And &H3 Case 6: N = B1 And &H1 Case Else: Utf8ToUni = Utf8ToUni & Chr(B1): GoTo Next1 End Select For K = 1 To cnt - 1 N = N * &H40 + (B(I + K) And &H3F) Next Utf8ToUni = Utf8ToUni & ChrW(N)Next1: I = I + cnt LoopEnd Function

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读