用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图片轮换效果的函数
Sep 28 Javascript
Jquery网页出现的乱码问题的三种解决方法
Jun 30 Javascript
jquery 定位input元素的几种方法小结
Jul 28 Javascript
js 阻止子元素响应父元素的onmouseout事件具体实现
Dec 23 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
Dec 30 Javascript
jQuery中index()的用法分析
Sep 05 Javascript
Bootstrap select多选下拉框实现代码
Dec 23 Javascript
JS中Array数组学习总结
Jan 18 Javascript
Vue.js中组件中的slot实例详解
Jul 17 Javascript
vue根据进入的路由进行原路返回的方法
Sep 26 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
May 20 Javascript
vue实现锚点定位功能
Jun 29 Vue.js
用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
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
php学习笔记 数组遍历实现代码
2011/06/09 PHP
php判断输入不超过mysql的varchar字段的长度范围
2011/06/24 PHP
php上传文件,创建递归目录的实例代码
2013/10/18 PHP
Ucren Virtual Desktop V2.0
2006/11/07 Javascript
jQuery UI的Dialog无法提交问题的解决方法
2011/01/11 Javascript
javascript面向对象之二 命名空间
2011/02/08 Javascript
分享几个超级震憾的图片特效
2012/01/08 Javascript
javascript题目,重写函数让其无限相加
2012/02/15 Javascript
Firefox中使用outerHTML的2种解决方法
2014/06/07 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
2017/05/26 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
详解React项目中碰到的IE问题
2019/03/14 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
ant design vue中表格指定格式渲染方式
2020/10/28 Javascript
js实现简单商品筛选功能
2021/02/02 Javascript
python进阶教程之循环对象
2014/08/30 Python
python 容器总结整理
2017/04/04 Python
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
Python处理文本换行符实例代码
2018/02/03 Python
python 解压pkl文件的方法
2018/10/25 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
2018/11/23 Python
pycharm新建一个python工程步骤
2019/07/16 Python
Python Django 简单分页的实现代码解析
2019/08/21 Python
Python-Flask:动态创建表的示例详解
2019/11/22 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
Python爬虫实现selenium处理iframe作用域问题
2021/01/27 Python
雅诗兰黛旗下专业男士保养领导品牌:Lab Series
2017/05/15 全球购物
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
实体的生命周期
2013/08/31 面试题
实习销售业务员自我鉴定
2013/09/21 职场文书
学校司机岗位职责
2013/11/14 职场文书
2019年中学生的思想品德评语集锦
2019/12/19 职场文书