Javascript UrlDecode函数代码


Posted in Javascript onJanuary 09, 2010

有时候可能会有这么一个需求,我在后台使用:

HttpUtility.UrlEncode(str, System.Text.Encoding.UTF8);

将Url进行编码,前台JS需要使用这段内容,这时候就需要解码了:

代码

/** 
* Url编码 
**/ 
ShengUtils.encode = function(unzipStr){ 
var zipstr=""; 
var strSpecial="!\"#$%&'()*+,/:;<=>?[]^`{|}~%"; 
var tt= ""; 
for(var i=0;i<unzipStr.length;i++){ 
var chr = unzipStr.charAt(i); 
var c=ShengUtils.StringToAscii(chr); 
tt += chr+":"+c+"n"; 
if(parseInt("0x"+c) > 0x7f){ 
zipstr+=encodeURI(unzipStr.substr(i,1)); 
}else{ 
if(chr==" ") 
zipstr+="+"; 
else if(strSpecial.indexOf(chr)!=-1) 
zipstr+="%"+c.toString(16); 
else 
zipstr+=chr; 
} 
} 
return zipstr; 
} /** 
* Url解码 
**/ 
ShengUtils.decode=function(zipStr){ 
var uzipStr=""; 
for(var i=0;i<zipStr.length;i++){ 
var chr = zipStr.charAt(i); 
if(chr == "+"){ 
uzipStr+=" "; 
}else if(chr=="%"){ 
var asc = zipStr.substring(i+1,i+3); 
if(parseInt("0x"+asc)>0x7f){ 
uzipStr+=decodeURI("%"+asc.toString()+zipStr.substring(i+3,i+9).toString()); ; 
i+=8; 
}else{ 
uzipStr+=ShengUtils.AsciiToString(parseInt("0x"+asc)); 
i+=2; 
} 
}else{ 
uzipStr+= chr; 
} 
} 
return uzipStr; 
} 
ShengUtils.StringToAscii=function(str){ 
return str.charCodeAt(0).toString(16); 
} 
ShengUtils.AsciiToString = function(asccode){ 
return String.fromCharCode(asccode); 
}
Javascript 相关文章推荐
无缝滚动改进版支持上下左右滚动(封装成函数)
Dec 04 Javascript
Javascript函数的参数
Jul 16 Javascript
js全选按钮的实现方法
Nov 17 Javascript
js判断当前页面用什么浏览器打开的方法
Jan 06 Javascript
浅谈jQuery中的checkbox问题
Aug 10 Javascript
bootstrap模态框消失问题的解决方法
Dec 02 Javascript
简单实现js悬浮导航效果
Feb 05 Javascript
jQuery中的on与bind绑定事件区别实例详解
Feb 28 Javascript
JS实现加载和读取XML文件的方法详解
Apr 24 Javascript
详解react-webpack2-热模块替换[HMR]
Aug 03 Javascript
select2 ajax 设置默认值,初始值的方法
Aug 09 Javascript
vue从零实现一个消息通知组件的方法详解
Mar 16 Javascript
JavaScript 页面坐标相关知识整理
Jan 09 #Javascript
了解jQuery技巧来提高你的代码
Jan 08 #Javascript
在html页面上拖放移动标签
Jan 08 #Javascript
利用js获取服务器时间的两个简单方法
Jan 08 #Javascript
JavaScript中的集合及效率
Jan 08 #Javascript
Extjs TriggerField在弹出窗口显示不出问题的解决方法
Jan 08 #Javascript
Extjs学习笔记之八 继承和事件基础
Jan 08 #Javascript
You might like
phpmyadmin操作流程
2006/10/09 PHP
不用数据库的多用户文件自由上传投票系统(1)
2006/10/09 PHP
有道搜索和IP138的IP的API接口(PHP应用)
2012/11/29 PHP
php版微信公众号接口实现发红包的方法
2016/10/14 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
分析php://output和php://stdout的区别
2018/05/06 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
2019/10/15 PHP
PHP文件打开关闭及读写操作示例解析
2020/08/06 PHP
javascript模拟订火车票和退票示例
2014/04/24 Javascript
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
JS 拼凑字符串的简单实例
2016/09/02 Javascript
JavaScript仿百度图片浏览效果
2016/11/23 Javascript
javascript实现页面滚屏效果
2017/01/17 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
详解VueJS 数据驱动和依赖追踪分析
2017/07/26 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
Python continue语句用法实例
2014/03/11 Python
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
VSCode下配置python调试运行环境的方法
2018/04/06 Python
python+splinter实现12306网站刷票并自动购票流程
2018/09/25 Python
Django通过dwebsocket实现websocket的例子
2019/11/15 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
如何使用pycharm连接Databricks的步骤详解
2020/09/23 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
2020/11/28 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
计算机维护专业推荐信
2014/02/27 职场文书
学生会辞职信
2015/03/02 职场文书
继续教育个人总结
2015/03/03 职场文书
辅导员学期工作总结
2015/08/14 职场文书
2016春季运动会前导词
2015/11/25 职场文书
python开发实时可视化仪表盘的示例
2021/05/07 Python
Python还能这么玩之用Python修改了班花的开机密码
2021/06/04 Python
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫
Golang流模式之grpc的四种数据流
2022/04/13 Golang