本文為您提供了VB6語言版本的語音通知接口對接DEMO示例
Attribute VB_Name = "UTF8"
Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByVal lpDefaultChar As String, ByVal lpUsedDefaultChar 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
Private Const CP_UTF8 = 65001
Private Const CP_ACP As Long = 0
'接口類型:互億無線語音通知接口。
'賬戶注冊:請通過該地址開通賬戶 http://user.ihuyi.com/?AX7wLG
'注意事項:
'(1)調(diào)試期間太援,請仔細(xì)閱讀接口文檔闽晦;
'(2)請使用APIID(查看APIID請登錄用戶中心->語音通知->帳戶及簽名設(shè)置->APIID)及 APIkey來調(diào)用接口
'(3)該代碼僅供接入互億無線語音通知接口參考使用,客戶可根據(jù)實際需要自行編寫提岔;
Public Function toUTF8(szInput)
? ? Dim wch, uch, szRet
? ? Dim x
? ? Dim nAsc, nAsc2, nAsc3
? ? '如果輸入?yún)?shù)為空仙蛉,則退出函數(shù)
? ? If szInput = "" Then
? ? ? ? toUTF8 = szInput
? ? ? ? Exit Function
? ? End If
? ? '開始轉(zhuǎn)換
? ? ? For x = 1 To Len(szInput)
? ? ? ? '利用mid函數(shù)分拆GB編碼文字
? ? ? ? wch = Mid(szInput, x, 1)
? ? ? ? '利用ascW函數(shù)返回每一個GB編碼文字的Unicode字符代碼
? ? ? ? '注:asc函數(shù)返回的是ANSI 字符代碼,注意區(qū)別
? ? ? ? nAsc = AscW(wch)
? ? ? ? If nAsc < 0 Then nAsc = nAsc + 65536
? ? ? ? If (nAsc And &HFF80) = 0 Then
? ? ? ? ? ? szRet = szRet & wch
? ? ? ? Else
? ? ? ? ? ? If (nAsc And &HF000) = 0 Then
? ? ? ? ? ? ? ? uch = "%" & Hex(((nAsc \ 2 ^ 6)) Or &HC0) & Hex(nAsc And &H3F Or &H80)
? ? ? ? ? ? ? ? szRet = szRet & uch
? ? ? ? ? ? Else
? ? ? ? ? ? ? ? 'GB編碼文字的Unicode字符代碼在0800 - FFFF之間采用三字節(jié)模版
? ? ? ? ? ? ? ? uch = "%" & Hex((nAsc \ 2 ^ 12) Or &HE0) & "%" & _
? ? ? ? ? ? ? ? ? ? ? ? ? ? Hex((nAsc \ 2 ^ 6) And &H3F Or &H80) & "%" & _
? ? ? ? ? ? ? ? ? ? ? ? ? ? Hex(nAsc And &H3F Or &H80)
? ? ? ? ? ? ? ? szRet = szRet & uch
? ? ? ? ? ? End If
? ? ? ? End If
? ? Next
? ? toUTF8 = szRet
? ? toUTF8 = Replace(toUTF8, Chr(13) + Chr(10), "%0D%0A")
? ? toUTF8 = Replace(toUTF8, " ", "%20")
? ? toUTF8 = Replace(toUTF8, "+", "%2B")
End Function
Public Function Utf8ToUnicode(ByRef Utf() As Byte) As String
? ? Dim lRet As Long
? ? Dim lLength As Long
? ? Dim lBufferSize As Long
? ? lLength = UBound(Utf) - LBound(Utf) + 1
? ? If lLength <= 0 Then Exit Function
? ? lBufferSize = lLength * 2
? ? Utf8ToUnicode = String$(lBufferSize, Chr(0))
? ? lRet = MultiByteToWideChar(CP_UTF8, 0, VarPtr(Utf(0)), lLength, StrPtr(Utf8ToUnicode), lBufferSize)
? ? If lRet <> 0 Then
? ? Utf8ToUnicode = Left(Utf8ToUnicode, lRet)
? ? End If
End Function
Public Function URLEncode(vstrIn)
? strReturn = ""
? Dim i
? For i = 1 To Len(vstrIn)
? ThisChr = Mid(vstrIn, i, 1)
? If Abs(Asc(ThisChr)) < &HFF Then
? strReturn = strReturn & ThisChr
? Else
? innerCode = Asc(ThisChr)
? If innerCode < 0 Then
? innerCode = innerCode + &H10000
? End If
? Hight8 = (innerCode And &HFF00) \ &HFF
? Low8 = innerCode And &HFF
? strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8)
? End If
? Next
? strReturn = Replace(strReturn, Chr(32), "%20")
? strReturn = Replace(strReturn, "+", "%2B")
? strReturn = Replace(strReturn, " ", "+")
? strReturn = Replace(strReturn, vbCrLf, "%0D%0A")
? strReturn = Replace(strReturn, "#", "%23")
? URLEncode = strReturn
End Function
相關(guān)產(chǎn)品