用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中的Screen屏幕对象
Jan 16 Javascript
javascript静态页面传值的三种方法分享
Nov 12 Javascript
JavaScript限定图片显示大小的方法
Mar 11 Javascript
jQuery插件scroll实现无缝滚动效果
Apr 27 Javascript
jquery实现的简单二级菜单效果代码
Sep 22 Javascript
jquery实现树形菜单完整代码
Dec 29 Javascript
属于你的jQuery提示框(Tip)插件
Jan 20 Javascript
从零学习node.js之利用express搭建简易论坛(七)
Feb 25 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
Jul 18 Javascript
JavaScript数组的5种迭代方法
Sep 29 Javascript
如何为你的JS项目添加智能提示与类型检查详解
Mar 12 Javascript
Javascript读取上传文件内容/类型/字节数
Apr 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 多进程 解决难题
2009/06/22 PHP
PHP 批量删除数据的方法分析
2009/10/30 PHP
php读取本地文件常用函数(fopen与file_get_contents)
2013/09/09 PHP
使用PHP访问RabbitMQ消息队列的方法示例
2018/06/06 PHP
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
js玩一玩WSH吧
2007/02/23 Javascript
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
2009/11/27 Javascript
28个JS验证函数收集
2010/03/02 Javascript
jquery 回车事件实现代码
2011/08/23 Javascript
谷歌Chrome浏览器扩展程序开发小记
2016/01/06 Javascript
浅析JS异步加载进度条
2016/05/05 Javascript
Jquery ajax请求导出Excel表格的实现代码
2016/06/08 Javascript
Node.js 中exports 和 module.exports 的区别
2017/03/14 Javascript
Vue中v-for的数据分组实例
2018/03/07 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
nodejs简单抓包工具使用详解
2019/08/23 NodeJs
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
javascript中可能用得到的全部的排序算法
2020/03/05 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
vue 封装面包屑组件教程
2020/11/16 Javascript
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
对python3新增的byte类型详解
2018/12/04 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
2019/07/22 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
CSS Houdini实现动态波浪纹效果
2019/07/30 HTML / CSS
加拿大时装零售商:Influence U
2018/12/22 全球购物
统计学专业毕业生的自我评价分享
2013/11/28 职场文书
八年级历史教学反思
2014/01/10 职场文书
教师个人自我鉴定
2014/02/08 职场文书
青奥会口号
2014/06/12 职场文书
导航工程专业自荐信
2014/09/02 职场文书
2014年安置帮教工作总结
2014/12/11 职场文书
Pillow图像处理库安装及使用
2022/04/12 Python
NoSQL优缺点与MongoDB数据库简介
2022/06/05 MongoDB