查看: 36|回复: 2

[ASP函数] ASP网址的编码和解码

[复制链接]
天下第一 发表于 2024-11-13 16:45:16 | 显示全部楼层 |阅读模式
ASP网址的编码和解码
  1.         Public Function [URLEncode](ByVal Str,ByVal OldCode,ByVal NewCode)
  2.                 Dim TempStr
  3.                 TempStr = ""
  4.                 If NewCode <> OldCode Then
  5.                         Session.CodePage = NewCode
  6.                         TempStr = Server.UrlEncode(Str)
  7.                         Session.CodePage = OldCode
  8.                 Else
  9.                         TempStr = Server.UrlEncode(Str)
  10.                 End If
  11.                 [URLEncode] = TempStr
  12.         End Function

  13.         Public Function [URLDecode](ByVal Str)
  14.                 Dim Start,Final,Length,Char,I,BUtf8,Pass
  15.                 Dim LeftStr,RightStr,FinalStr
  16.                 Dim B0,B1,Bx,BLength,Position,U,Utf8

  17.                 B0 = Array(192,224,240,248,252,254)
  18.                 Str = Replace(Str,"+"," ")
  19.                 Pass = 0
  20.                 Utf8 = -1

  21.                 Length = Len(Str) : Start = InStr(Str,"%") : Final = InStrRev(Str,"%")
  22.                 If Start = 0 Or Length < 3 Then [URLDecode] = Str : Exit Function
  23.                 LeftStr = Left(Str,Start - 1) : RightStr = Right(Str,Length - 2 - Final)

  24.                 For I = Start To Final
  25.                         Char = Mid(Str,I,1)
  26.                         If Char = "%" Then
  27.                                 Bx = URLDecode_Hex(Mid(Str,I + 1,2))
  28.                                 If Bx > 31 And Bx < 128 Then
  29.                                         I = I + 2
  30.                                         FinalStr = FinalStr & ChrW(Bx)
  31.                                 ElseIf Bx > 127 Then
  32.                                         I = I + 2
  33.                                         If Utf8 < 0 Then
  34.                                                 BUtf8 = 1 : BLength = -1 : B1 = Bx
  35.                                                 For Position = 4 To 0 Step -1
  36.                                                         If B1 >= B0(Position) And B1 < B0(Position + 1) Then
  37.                                                                 BLength = Position
  38.                                                                 Exit For
  39.                                                         End If
  40.                                                 Next
  41.                                                 If BLength > -1 Then
  42.                                                         For Position = 0 To BLength
  43.                                                                 B1 = URLDecode_Hex(Mid(Str,I + Position * 3 + 2,2))
  44.                                                                 If B1 < 128 Or B1 > 191 Then BUtf8 = 0 : Exit For
  45.                                                         Next
  46.                                                 Else
  47.                                                         BUtf8 = 0
  48.                                                 End If
  49.                                                 If BUtf8 = 1 And BLength = 0 Then BUtf8 = -2
  50.                                                 If BUtf8 > -1 And Utf8 = -2 Then I = Start - 1 : FinalStr = "" : Pass = 1
  51.                                                 Utf8 = BUtf8
  52.                                         End If
  53.                                         If Pass = 0 Then
  54.                                                 If Utf8 = 1 Then
  55.                                                         B1 = Bx : U = 0 : BLength = -1
  56.                                                         For Position = 4 To 0 Step -1
  57.                                                                 If B1 >= B0(Position) And B1 < B0(Position + 1) Then
  58.                                                                         BLength = Position
  59.                                                                         B1 = (B1 xOr B0(Position)) * 64 ^ (Position + 1)
  60.                                                                         Exit For
  61.                                                                 End If
  62.                                                         Next
  63.                                                         If BLength > -1 Then
  64.                                                                 For Position = 0 To BLength
  65.                                                                         Bx = URLDecode_Hex(Mid(Str,I + 2,2)) : I = I + 3
  66.                                                                         If Bx < 128 Or Bx > 191 Then U = 0 : Exit For
  67.                                                                         U = U + (Bx And 63) * 64 ^ (BLength - Position)
  68.                                                                 Next
  69.                                                                 If U > 0 Then FinalStr = FinalStr & ChrW(B1 + U)
  70.                                                         End If
  71.                                                 Else
  72.                                                         B1 = Bx * &H100 : U = 0
  73.                                                         Bx = URLDecode_Hex(Mid(Str,I + 2,2))
  74.                                                         If Bx > 0 Then
  75.                                                                 U = B1 + Bx
  76.                                                                 I = I + 3
  77.                                                         Else
  78.                                                                 If Left(Str,1) = "%" Then
  79.                                                                         U = B1 + Asc(Mid(Str,I + 3,1))
  80.                                                                         I = I + 2
  81.                                                                 Else
  82.                                                                         U = B1 + Asc(Mid(Str,I + 1,1))
  83.                                                                         I = I + 1
  84.                                                                 End If
  85.                                                         End If
  86.                                                         FinalStr = FinalStr & Chr(U)
  87.                                                 End If
  88.                                         Else
  89.                                                 Pass = 0
  90.                                         End If
  91.                                 End If
  92.                         Else
  93.                                 FinalStr = FinalStr & Char
  94.                         End If
  95.                 Next
  96.                 [URLDecode] = LeftStr & FinalStr & RightStr
  97.         End Function
复制代码
一往情僧 发表于 2024-11-14 08:01:14 | 显示全部楼层
楼主是个实在人!
 楼主| 天下第一 发表于 2024-11-14 09:25:16 | 显示全部楼层

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表

在线客服

售前咨询
售后咨询
服务热线
023-58418553
微信公众号