js的URL Encode与Decode

<script language = "javascript">
function go_yw_search(keyword,area)
{
document.getElementById('queryKey').value = keyword;
document.getElementById('a').value = area;
document.getElementById('querytype').value = 6;
//alert(keyword);
//return false;
//KeyCheck(document.queryActionForm);
//return false;
document.queryActionForm.submit();
return true;
}

function modi_str(){    if(document.all.text.method.checked){     if(document.all.text.decode.value!=""){      document.all.text.encode.value = UrlEncode(document.all.text.decode.value);     }else{      document.all.text.decode.value = UrlDecode(document.all.text.encode.value);     }    }else{     if(document.all.text.encode.value!=""){      document.all.text.decode.value = UrlDecode(document.all.text.encode.value);     }else{      document.all.text.encode.value = UrlEncode(document.all.text.decode.value);     }    }   }
String.prototype.GetCount = function(str,mode){ return eval("this.match(/("+str+")/g"+(mode?"i":"")+").length"); }

function UrlDecode(str)
{   
var i,temp;  
var result="";  
for(i=0;i<str.length;i++)
{    
if(str.charAt(i)=="%")
{     
   if(str.charAt(++i)=="u")
     {      
      temp=str.charAt(i++) + str.charAt(i++) + str.charAt(i++) + str.charAt(i++) + str.charAt(i);
      result += unescape("%" + temp);     
     }
     else
     {      
      temp = str.charAt(i++) + str.charAt(i);     
      if(eval("0x"+temp)<=160)
      {       
       result += unescape("%" + temp);      
      }
      else
      {       
       temp += str.charAt(++i) + str.charAt(++i) + str.charAt(++i);      
       result += Decode_unit("%" + temp);      
      }     
     }    
    }
    else
    {     
     result += str.charAt(i);
    }  
}  
return result;
}   
   function UrlEncode(str){   var i,temp,p,q;   var result="";   for(i=0;i<str.length;i++){     temp = str.charCodeAt(i);    if(temp>=0x4e00){      execScript("ascCode=hex(asc(\""+str.charAt(i)+"\"))", "vbscript");     result+=ascCode.replace(/(.{ 2 })/g, "%$1");     }else{      result+=escape(str.charAt(i));     }    }   return result;   }        
function Decode_unit(str)
{   
   var p,q = "";  
   if(str.GetCount("%")!=2) return str;  
   p=eval("0x" + str.split("%")[1]);  
   q=eval("0x" + str.split("%")[2]);  
   if(p<160 || q<160) return unescape(str);  
   str=str.replace(/%/g,"");  
execScript("temp=&H"+str, "vbscript");  
execScript("result=chr("+temp+")", "vbscript");  
   return result;  
}   
//得到地址栏传递参数的函数
function QueryString(qs)
{
var s = location.href;
s = s.replace("?","?&").split("&");
var re = "";
var str = "";
for(i=1;i<s.length;i++)
if(s[i].indexOf(qs+"=")==0)
re = s[i].replace(qs+"=","");
re = UrlDecode(re);
return re;
}
function QueryStringArea(qs)
{
var s = location.href;
s = s.replace("?","?&").split("&");
var re = "";
for(i=1;i<s.length;i++)
if(s[i].indexOf(qs+"=")==0)
re = s[i].replace(qs+"=","");
re = UrlDecode(re);
if (re == "") re= 'B000000CB-全部市';
return re;
}
</script>

posted on 2011-12-21 14:20  冰危节奏  阅读(10051)  评论(0)    收藏  举报

导航