用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 相关文章推荐
javascript监听鼠标滚轮事件浅析
Jun 05 Javascript
jQuery层级选择器用法分析
Feb 10 Javascript
js实现从中间开始往上下展开网页窗口的方法
Mar 02 Javascript
input点击后placeholder中的提示消息消失
Jan 15 Javascript
js正则表达式replace替换变量方法
May 21 Javascript
AngularJS入门教程之ng-checked 指令详解
Aug 01 Javascript
Angular下H5上传图片的方法(可多张上传)
Jan 09 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
Mar 01 Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
Apr 17 Javascript
layui实现鼠标移动到单元格上显示数据的方法
Sep 11 Javascript
微信小程序实现底部弹出模态框
Nov 18 Javascript
javascript实现京东快递单号的查询效果
Nov 30 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
PHP 中的一些经验积累
2006/10/09 PHP
php程序的国际化实现方法(利用gettext)
2011/08/14 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
2015/12/18 PHP
php实现登陆模块功能示例
2016/10/20 PHP
Laravel中为什么不使用blpop取队列详析
2018/08/01 PHP
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
2010/03/15 Javascript
jquery validate poshytip 自定义样式
2012/11/26 Javascript
早该知道的7个JavaScript技巧
2013/03/27 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
使用JavaScript 实现的人脸检测
2015/03/24 Javascript
限制复选框最多选择项的实现代码
2016/05/30 Javascript
Bootstrap编写导航栏和登陆框
2016/05/30 Javascript
JavaScript中 DOM操作方法小结
2017/04/25 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
基于vue打包后字体和图片资源失效问题的解决方法
2018/03/06 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
详解js中的原型,原型对象,原型链
2020/07/16 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
Bootstrap FileInput实现图片上传功能
2021/01/28 Javascript
Python异常处理总结
2014/08/15 Python
Python实现线程状态监测简单示例
2018/03/28 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
2018/06/21 Python
Python实现平行坐标图的绘制(plotly)方式
2019/11/22 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
2020/02/21 Python
python SOCKET编程基础入门
2021/02/27 Python
什么是makefile? 如何编写makefile?
2013/01/02 面试题
工商管理本科毕业生求职信范文
2013/10/05 职场文书
财会自我鉴定范文
2013/12/27 职场文书
乡镇三项教育实施方案
2014/03/30 职场文书
开学寄语大全
2014/04/08 职场文书
乡镇党建工作汇报材料
2014/10/27 职场文书
孔繁森观后感
2015/06/10 职场文书
Django程序的优化技巧
2021/04/29 Python