用JavaScript实现UrlEncode和UrlDecode的脚本代码


Posted in Javascript onJuly 23, 2008
<script type="text/vbscript">     
Function str2asc(strstr)      
 str2asc = hex(asc(strstr))      
End Function      
Function asc2str(ascasc)      
 asc2str = chr(ascasc)      
End Function     
</script>

将vbscript函数转成javascript,方便非ie浏览器下使用

function str2asc(strstr){ 
return ("0"+strstr.charCodeAt(0).toString(16)).slice(-2); 
} 
function asc2str(ascasc){ 
return String.fromCharCode(ascasc); 
}
<script type="text/javascript">     
/*这里开始时UrlEncode和UrlDecode函数*/      
function UrlEncode(str){      
  var ret="";      
  var strSpecial="!\"#$%&'()*+,/:;<=>?[]^`{|}~%";      
  var tt= "";       for(var i=0;i<str.length;i++){      
   var chr = str.charAt(i);      
    var c=str2asc(chr);      
    tt += chr+":"+c+"n";      
    if(parseInt("0x"+c) > 0x7f){      
      ret+="%"+c.slice(0,2)+"%"+c.slice(-2);      
    }else{      
      if(chr==" ")      
        ret+="+";      
      else if(strSpecial.indexOf(chr)!=-1)      
        ret+="%"+c.toString(16);      
      else      
        ret+=chr;      
    }      
  }      
  return ret;      
}      
function UrlDecode(str){      
  var ret="";      
  for(var i=0;i<str.length;i++){      
   var chr = str.charAt(i);      
    if(chr == "+"){      
      ret+=" ";      
    }else if(chr=="%"){      
     var asc = str.substring(i+1,i+3);      
     if(parseInt("0x"+asc)>0x7f){      
      ret+=asc2str(parseInt("0x"+asc+str.substring(i+4,i+6)));      
      i+=5;      
     }else{      
      ret+=asc2str(parseInt("0x"+asc));      
      i+=2;      
     }      
    }else{      
      ret+= chr;      
    }      
  }      
  return ret;      
}      
alert(UrlDecode("%C2%D2%C2%EB"));     
</script>
Javascript 相关文章推荐
js获得地址栏?问号后参数的方法
Aug 08 Javascript
JS+DIV+CSS排版布局实现美观的选项卡效果
Oct 10 Javascript
理解JavaScript事件对象
Jan 25 Javascript
jQuery基于正则表达式的表单验证功能示例
Jan 21 Javascript
vue.js删除动态绑定的radio的指定项
Jun 02 Javascript
详解vue.js移动端导航navigationbar的封装
Jul 05 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
Apr 26 Javascript
js中let能否完全替代IIFE
Jun 15 Javascript
JS函数本身的作用域实例分析
Mar 16 Javascript
原生JS实现留言板
Mar 26 Javascript
vue-router 按需加载 component: () =&gt; import() 报错的解决
Sep 22 Javascript
JS原生实现轮播图的几种方法
Mar 23 Javascript
用js遍历 table的脚本
Jul 23 #Javascript
JavaScript 版本自动生成文章摘要
Jul 23 #Javascript
javascript 支持ie和firefox杰奇翻页函数
Jul 22 #Javascript
IE8 引入跨站数据获取功能说明
Jul 22 #Javascript
兼容多浏览器的字幕特效Marquee的通用js类
Jul 20 #Javascript
js停止输出代码
Jul 20 #Javascript
javascript 兼容FF的onmouseenter和onmouseleave的代码
Jul 19 #Javascript
You might like
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
关于PHP中的Class的几点个人看法
2006/10/09 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
2014/12/16 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
简单的JS多重继承示例
2008/03/13 Javascript
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
javascript定义函数的方法
2010/12/06 Javascript
5个最佳的Javascript日期处理类库分享
2012/04/15 Javascript
jquery插件制作 表单验证实现代码
2012/08/17 Javascript
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
2015/08/12 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
Jquery attr()方法 属性赋值和属性获取详解
2016/04/15 Javascript
详解Angular 4.x 动态创建组件
2017/04/25 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
深入浅析Vue中mixin和extend的区别和使用场景
2019/08/01 Javascript
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
matplotlib绘制动画代码示例
2018/01/02 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
Css3实现无缝滚动防抖
2020/09/14 HTML / CSS
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
Eyeko美国:屡获殊荣的睫毛膏、眼线笔和眉妆
2018/07/05 全球购物
Currentbody美国/加拿大:美容仪专家
2020/03/09 全球购物
小学教研工作制度
2014/01/15 职场文书
捐书寄语赠言
2014/01/18 职场文书
幼儿园教研活动方案
2014/01/19 职场文书
公司晚会策划方案
2014/05/17 职场文书
销售目标责任书
2014/07/23 职场文书
交通事故赔偿协议书
2014/10/16 职场文书
感谢信怎么写
2015/01/21 职场文书
学校教师师德师风承诺书
2015/04/28 职场文书
大学生社会实践活动总结报告
2015/05/06 职场文书
2019入党申请书格式和范文
2019/06/25 职场文书