URLデコード機能、シンプルでわかりやすい。 主な理由は、元の中国語が URL エンコードされているため、特に使用する場合は中国語に戻す必要があるため、このような機能が必要です。例えば:
Baidu で Script Home を検索すると、URL の後のパラメータは次のようになります。
http://www.baidu.com/s?cl=3&wd=%BD%C5%B1%BE%D6%AE%BC%D2
%BD%C5%B1%BE%D6%AE%BC%D2 を中国語に復元したい場合は、次の関数を使用するだけです。
<%
response.write urldecode(http://www.baidu.com/s?cl=3&wd=%BD%C5%B1%BE%D6%AE%BC%D2)
'===============================================
'関数名:URLDecode
'機能: URL デコード
'===============================================
関数 URLDecode(ByVal urlcode)
ディムスタート、ファイナル、長さ、文字、i、butf8、パス
薄暗い leftstr、rightstr、finalstr
ディム b0、b1、bx、blength、位置、u、utf8
エラー時は次へ再開
b0 = 配列(192,224,240,248,252,254)
urlcode = 置換(urlcode,+, )
パス = 0
utf8 = -1
長さ = Len(urlcode) : 開始 = InStr(urlcode,%) : 最終 = InStrRev(urlcode,%)
start = 0 または length < 3 の場合、URLDecode = urlcode : 関数を終了します。
leftstr = Left(urlcode,start - 1) : rightstr = Right(urlcode,length - 2 - Final)
For i = 開始から最終まで
char = Mid(urlcode,i,1)
char = %の場合
bx = URLDecode_Hex(Mid(urlcode,i + 1,2))
bx > 31 かつ bx < 128 の場合
i = i + 2
Finalstr = Finalstr & ChrW(bx)
ElseIf bx > 127 then
i = i + 2
utf8 < 0 の場合
butf8 = 1 : blength = -1 : b1 = bx
位置 = 4 ~ 0 の場合 ステップ -1
b1 >= b0(位置)かつ b1 < b0(位置 + 1)の場合
b 長さ = 位置
出口
終了の場合
次
blength > -1 の場合
位置 = 0 の場合 blength へ
b1 = URLDecode_Hex(Mid(urlcode,i + 位置 * 3 + 2,2))
b1 < 128 または b1 > 191 の場合 butf8 = 0 : 終了
次
それ以外
butf8 = 0
終了の場合
butf8 = 1 かつ blength = 0 の場合、butf8 = -2
butf8 > -1 かつ utf8 = -2 の場合、 i = start - 1 : Finalstr = : pass = 1
utf8 = butf8
終了の場合
pass = 0 の場合
utf8 = 1 の場合
b1 = bx : u = 0 : blength = -1
位置 = 4 ~ 0 の場合 ステップ -1
b1 >= b0(位置)かつ b1 < b0(位置 + 1)の場合
b 長さ = 位置
b1 = (b1 xOr b0(位置)) * 64 ^ (位置 + 1)
出口
終了の場合
次
blength > -1 の場合
位置 = 0 の場合 blength へ
bx = URLDecode_Hex(Mid(urlcode,i + 2,2)) : i = i + 3
bx < 128 または bx > 191 の場合、u = 0 : 終了
u = u + (bx And 63) * 64 ^ (blength - 位置)
次
u > 0 の場合、finalstr = Finalstr & ChrW(b1 + u)
終了の場合
それ以外
b1 = bx * &h100 : u = 0
bx = URLDecode_Hex(Mid(urlcode,i + 2,2))
bx > 0 の場合
u = b1 + bx
i = i + 3
それ以外
If Left(urlcode,1) = % then
u = b1 + Asc(Mid(urlcode,i + 3,1))
i = i + 2
それ以外
u = b1 + Asc(Mid(urlcode,i + 1,1))
i = i + 1
終了の場合
終了の場合
Finalstr = Finalstr & Chr(u)
終了の場合
それ以外
パス = 0
終了の場合
終了の場合
それ以外
最終文字列 = 最終文字列 & 文字
終了の場合
次
URLDecode = leftstr & Finalstr & rightstr
終了機能
関数 URLDecode_Hex(ByVal h)
エラー時は次へ再開
h = &h & Trim(h) : URLDecode_Hex = -1
If Len(h) <> 4 then 関数を終了
isNumeric(h) の場合、URLDecode_Hex = cInt(h)
終了機能
%>