VB源码函数UTF8Encode UTF8编码,原内容中有URLENCODE内容的不作更改

VB源码函数UTF8Encode UTF8编码,原内容中有URLENCODE内容的不作更改

'┏〓〓〓〓〓〓〓〓〓 UTF8Encode_ForJs,start 〓〓〓〓〓〓〓〓〓┓
'[简介]:
'UTF8编码,原内容中有URLENCODE内容的不作更改
Function UTF8Encode_ForJs(ByVal szInput As String) As String
       Dim wch  As String
       Dim uch As String
       Dim szRet As String
       Dim x As Long
       Dim inputLen As Long
       Dim nAsc  As Long
       Dim nAsc2 As Long
       Dim nAsc3 As Long
        
       If szInput = "" Then
           UTF8Encode_ForJs = szInput
           Exit Function
       End If
       inputLen = Len(szInput)
       For x = 1 To inputLen
       '得到每个字符
           wch = Mid(szInput, x, 1)
           '得到相应的UNICODE编码
           nAsc = AscW(wch)
       '对于<0的编码 其需要加上65536
           If nAsc < 0 Then nAsc = nAsc + 65536
       '对于<128位的ASCII的编码则无需更改
           If (nAsc And &HFF80) = 0 Then
               szRet = szRet & wch
           Else
               If (nAsc And &HF000) = 0 Then
               '真正的第二层编码范围为000080 - 0007FF
               'Unicode在范围D800-DFFF中不存在任何字符,基本多文种平面中约定了这个范围用于UTF-16扩展标识辅助平面(两个UTF-16表示一个辅助平面字符).
               '当然,任何编码都是可以被转换到这个范围,但在unicode中他们并不代表任何合法的值。
        
                   uch = "%" & Hex(((nAsc \ 2 ^ 6)) Or &HC0) & Hex(nAsc And &H3F Or &H80)
                   szRet = szRet & uch
                    
   
   
   
               Else
               '第三层编码00000800 – 0000FFFF
               '首先取其前四位与11100000进行或去处得到UTF-8编码的前8位
               '其次取其前10位与111111进行并运算,这样就能得到其前10中最后6位的真正的编码 再与10000000进行或运算来得到UTF-8编码中间的8位
               '最后将其与111111进行并运算,这样就能得到其最后6位的真正的编码 再与10000000进行或运算来得到UTF-8编码最后8位编码
                   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
        
       UTF8Encode_ForJs = szRet
End Function
'┗〓〓〓〓〓〓〓〓〓  UTF8Encode_ForJs,end  〓〓〓〓〓〓〓〓〓┛

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

专注VB编程开发20年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值