会员登录 - 用户注册 - 网站地图 Office中国(office-cn.net),专业Office论坛
当前位置:主页 > 技巧 > Access技巧 > 模块函数VBA > 正文

Access如何将二进制UTF8转成字符串

时间:2013-07-22 14:32 来源:Office中国 作者:tmtony 阅读:
分享一个utf-8转字符串的函数。解决编码带来的错误!
调用方法: 

Private Sub cmdConvert_Click()
    fm20TxtText.Text = FromUtf8(FromHex(fm20TxtHex.Text))
End Sub

函数如下:
Private Declare Function CryptStringToBinary Lib "Crypt32" _

    Alias "CryptStringToBinaryW" ( _
    ByVal pszString As Long, _
    ByVal cchString As Long, _
    ByVal dwFlags As Long, _
    ByVal pbBinary As Long, _
    ByRef pcbBinary As Long, _
    ByRef pdwSkip As Long, _
    ByRef pdwFlags As Long) As Long

Private Declare Function MultiByteToWideChar Lib "kernel32" ( _
    ByVal CodePage As Long, _
    ByVal dwFlags As Long, _
    ByVal lpMultiByteStr As Long, _
    ByVal cchMultiByte As Long, _
    ByVal lpWideCharStr As Long, _
    ByVal cchWideChar As Long) As Long

Public Function FromHex(ByRef HexString As String) As Byte()
    Const CRYPT_STRING_HEX As Long = &H4&
    Dim lngOutLen As Long
    Dim dwActualUsed As Long
    Dim bytBinary() As Byte

    If Len(HexString) < 1 Then Exit Function

    'Determine output buffer length required.
    If CryptStringToBinary(StrPtr(HexString), _
                           Len(HexString), _
                           CRYPT_STRING_HEX, _
                           0&, _
                           lngOutLen, _
                           ByVal 0&, _
                           dwActualUsed) = 0 Then
        Err.Raise &H80044100, "FromHex", _
                  "CryptStringToBinary failed, error " & CStr(Err.LastDllError)
    Else
        'Convert to binary.
        ReDim bytBinary(lngOutLen - 1)
        If CryptStringToBinary(StrPtr(HexString), _
                               Len(HexString), _
                               CRYPT_STRING_HEX, _
                               VarPtr(bytBinary(0)), _
                               lngOutLen, _

(责任编辑:admin)

顶一下
(1)
100%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价: