この記事では、ASP に付属する server.urlencode とは別の、ASP に実装されている URLEncode と URLDecode のカスタム関数を中心に紹介します。必要な方は参考にしてください。
Ajax で投稿を作成するときに、サーバーから取得したデータが常に文字化けしていることがわかり、インターネットでいくつかの解決策を調べましたが、データが文字化けしているためわかりませんでした。 、サーバー側の XML を解析できなかったか、エラーが発生しました。したがって、投稿する前にエンコードしてからサーバー上でデコードすることで問題は解決しますが、データが大きい場合は速度に影響する可能性があります。
ASP のリクエストでは URL エンコードされた文字列が自動的にデコードされますが、Request.BinaryRead(Request.TotalBytes) では投稿データを取得するときにデコードされないため、デコードする必要があります。
以下は、私が見つけたASPのserver.urlencode関数のデコード関数です。
次のようにコードをコピーします。
関数 URLDecode(enStr)
dim deStr,strSpecial
薄暗い c、i、v
deStr=""
strSpecial="!""#$%&'()*+,.-_/:;< =>?@[/]^`{|}~%"
i=1 から len(enStr) まで
c=Mid(enStr,i,1)
c="%" の場合
v=eval("&h"+Mid(enStr,i+1,2))
if inStr(strSpecial,chr(v))>0 then
deStr=deStr&chr(v)
i=i+2
それ以外
v=eval("&h"+ Mid(enStr,i+1,2) + Mid(enStr,i+4,2))
deStr=deStr & chr(v)
i=i+5
終了する場合
それ以外
c="+" の場合
deStr=deStr&" "
それ以外
deStr=deStr&c
終了する場合
終了する場合
次
URLDecode=deStr
終了機能
これとserver.urlencodeの違いは、server.urlencodeがhtmlやxmlなどのタグを変換することです。
エンコードも実行されますが、以下の機能は実行されません。 postを使用する場合はxmlを使用するため、次のようにエンコードしてからデコードします。
次のようにコードをコピーします。
プライベート関数 URLEncoding(vstrIn)
strReturn = ""
For i = 1 To Len(vstrIn)
ThisChr = Mid(vStrIn,i,1)
If Abs(Asc(ThisChr)) < &HFF then
strReturn = strReturn & ThisChr
それ以外
innerCode = Asc(ThisChr)
innerCode < 0 の場合
innerCode = innerCode + &H10000
終了の場合
Hight8 = (innerCode と &HFF00)/ &HFF
Low8 = innerCode および &HFF
strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8)
終了の場合
次
URLEncoding = strReturn
終了機能