打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VB不使用 API,将 Utf8 转换为 Unicode
userphoto

2023.09.30 广东

关注

六弦的闷音
于 2010-05-07 09:47:00 发布
分类专栏: VB相关资料 文章标签: api vb function byte string
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

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
   Loop
End Function

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
谡怎么读
觇怎么读
VB 网址解密代码 |VB 网|VB 视频教程|VB编程入门网
在VB 中调用动态连接库
沅怎么读
阆怎么读
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服