VB6
VB6代碼示例
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 '接口類型:達(dá)信通語音通知接口。 '賬戶注冊:請(qǐng)通過該地址開通賬戶http://sms.wx96.com/register.html '注意事項(xiàng): '(1)調(diào)試期間,請(qǐng)仔細(xì)閱讀接口文檔; '(2)請(qǐng)使用APIID(查看APIID請(qǐng)登錄用戶中心->語音通知->帳戶及簽名設(shè)置->APIID)及 APIkey來調(diào)用接口 '(3)該代碼僅供接入達(dá)信通語音通知接口參考使用,客戶可根據(jù)實(shí)際需要自行編寫; 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ù)返回每一個(gè)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