用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 键盘记录实现(兼容FireFox和IE)
Feb 07 Javascript
javascript window.opener的用法分析
Apr 07 Javascript
javascript 异步页面查询实现代码(asp.net)
May 26 Javascript
基于jquery封装的一个js分页
Nov 15 Javascript
深入理解$.each和$(selector).each
May 15 Javascript
JavaScript登录验证码的实现
Oct 27 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
Jul 25 Javascript
常用的9个JavaScript图表库详解
Dec 19 Javascript
微信小程序使用字体图标的方法
May 23 Javascript
Vue 刷新当前路由的实现代码
Sep 26 Javascript
javascript 数组(list)添加/删除的实现
Dec 17 Javascript
react中props 的使用及进行限制的方法
Apr 28 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电台频率大全 - 25 云南省
2020/03/11 无线电
PHP 程序授权验证开发思路
2009/07/09 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
培养自己的php编码规范
2015/09/28 PHP
通过PHP实现获取访问用户IP
2020/05/09 PHP
数据结构之利用PHP实现二分搜索树
2020/10/25 PHP
js中escape对应的C#解码函数 UrlDecode
2012/12/16 Javascript
jquery实现点击查看更多内容控制段落文字展开折叠效果
2015/08/06 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
2016/02/26 Javascript
基于JQuery实现分隔条的功能
2016/06/17 Javascript
JavaScript中concat复制数组方法浅析
2019/01/20 Javascript
vue input输入框关键字筛选检索列表数据展示
2020/10/26 Javascript
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
ant-design-vue 快速避坑指南(推荐)
2020/01/21 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
2020/07/19 Javascript
js+html+css实现手动轮播和自动轮播
2020/12/30 Javascript
[13:18]《一刀刀一天》之DOTA全时刻21:详解TI新赛制 A队再露獠牙
2014/06/24 DOTA
Python实现文件按照日期命名的方法
2015/07/09 Python
在PyCharm导航区中打开多个Project的关闭方法
2019/01/17 Python
python实现屏保程序(适用于背单词)
2019/07/30 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
2020/10/27 Python
实例教程 一款纯css3实现的数字统计游戏
2014/11/10 HTML / CSS
CSS3 animation ? steps 函数详解
2019/08/30 HTML / CSS
美国转售二手商品的电子商务平台:BLINQ
2018/12/13 全球购物
函授毕业生自我鉴定
2013/11/06 职场文书
初二学习计划书范文
2014/04/27 职场文书
优秀员工评优方案
2014/06/13 职场文书
学校安全责任书范本
2014/07/23 职场文书
单位活动策划方案
2014/08/17 职场文书
初中家长评语和期望
2014/12/26 职场文书
2016年党员读书月活动总结
2016/04/06 职场文书
创业计划书之青年旅馆
2019/09/23 职场文书
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS
js中Map和Set的用法及区别实例详解
2022/02/15 Javascript
Python实现双向链表
2022/05/25 Python
clear 万能清除浮动(clearfix:after)
2023/05/21 HTML / CSS