ASP 에서 구현 되 는 URLEncode,URLDecode 사용자 정의 함수

2552 단어 ASPURLEncodeURLDecode
ajax 의 post 를 만 들 때 서버 에서 데 이 터 를 얻 을 때 항상 어 지 러 운 것 을 발 견 했 습 니 다.인터넷 에서 해결 방법 을 봤 는데 도 잘 모 르 겠 습 니 다.제 post 는 과거 에 xml 형식 이 었 습 니 다.어 지 러 운 서버 의 xml 도 분석 할 수 없 거나 오류 가 발생 했 습 니 다.그래서 post 전에 인 코딩 을 하고 서버 에 가서 디 코딩 을 하면 문제 가 해결 되 지만 데이터 가 많 으 면 속도 에 영향 을 줄 수 있 습 니 다.
ASP 의 request 는 url 인 코딩 을 거 친 문자열 을 자동 으로 디 코딩 하지만 Request.Binary Read(Request.TotalBytes)가 post 데 이 터 를 가 져 올 때 디 코딩 되 지 않 기 때문에 디 코딩 을 해 야 합 니 다.
다음은 제 가 찾 은 ASP 에서 server.urlencode 함수 의 디 코딩 함수 입 니 다.

Function URLDecode(enStr)
  dim deStr,strSpecial
  dim c,i,v
    deStr=""
    strSpecial="!""#$%&'()*+,.-_/:;< =>?@[/]^`{|}~%"
    for i=1 to len(enStr)
      c=Mid(enStr,i,1)
      if c="%" then
        v=eval("&h"+Mid(enStr,i+1,2))
        if inStr(strSpecial,chr(v))>0 then
          deStr=deStr&chr(v)
          i=i+2
        else
          v=eval("&h"+ Mid(enStr,i+1,2) + Mid(enStr,i+4,2))
          deStr=deStr & chr(v)
          i=i+5
        end if
      else
        if c="+" then
          deStr=deStr&" "
        else
          deStr=deStr&c
        end if
      end if
    next
    URLDecode=deStr
End function
인 코딩 함 수 를 추가 합 니 다.이것 은 server.urlencode 와 다른 점 은 server.urlencode 가 html 또는 xml 등 라벨 을 추가 합 니 다.예 를 들 어
인 코딩 도 할 수 있 지만 아래 의 이 함 수 는 할 수 없습니다.나 는 post 를 사용 할 때 xml 을 사용 하기 때문에 아래 의 것 으로 인 코딩 을 하고 디 코딩 을 한다.

private Function URLEncoding(vstrIn)
    strReturn = ""
    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
    URLEncoding = strReturn
  End Function

좋은 웹페이지 즐겨찾기