<script language="vbscript">
dim str
str="%D6%D0"
msgbox URLDecode(str)
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
</script>

解决方案 »

  1.   

    好像不行,当我在文本框中输入:中华人民
    然后用document.location.search得到 %D6%D0%BB%AA%C8%CB%C3%F1 这样一串字符,
    但当我用encodeURI("中华人民")时得到 %E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91 这样一串字符,
    显然他们不一样,
      

  2.   

    <script language="JavaScript">
    <!--
    String.prototype.AddZeroPerfix=function (len){
    if(this.length>=len)
    return this;
    var str='0000000000000000000000000000'+this;
    return str.substr(str.length-len,len);
    }
    function URLEncode(str){
    var strRet='';
    for(var iCnt=0;iCnt<str.length;iCnt++){
    if(str.charCodeAt(iCnt)>255){
    strRet+='%u'+str.charCodeAt(iCnt).toString(16).toUpperCase().AddZeroPerfix(4);
    }else{
    strRet+='%'+str.charCodeAt(iCnt).toString(16).toUpperCase().AddZeroPerfix(2);
    }
    }
    return strRet;
    }
    alert(unescape(URLEncode('中z华w人s民d共f和g国has')));
    -->
    </script>