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 相关文章推荐
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
Jun 29 Javascript
js动态往表格的td中添加图片并注册事件
Jun 12 Javascript
Javascript学习笔记之函数篇(五) : 构造函数
Nov 23 Javascript
JavaScript数组Array对象增加和删除元素方法总结
Jan 20 Javascript
浅谈javascript中的instanceof和typeof
Feb 27 Javascript
javascript单例模式的简单实现方法
Jul 25 Javascript
js实现网站最上边可关闭的浮动广告条代码
Sep 04 Javascript
Bootstrap每天必学之面板
Nov 30 Javascript
JavaScript对象参数的引用传递
Jan 14 Javascript
jQuery在header中设置请求信息的方法
Mar 06 Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
Jun 11 Javascript
JavaScript直接调用函数与call调用的区别实例分析
May 22 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
php htmlentities和htmlspecialchars 的区别
2008/08/18 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
PHP实现设计模式中的抽象工厂模式详解
2014/10/11 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
2015/10/27 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
PHP与SQL语句写一句话木马总结
2019/10/11 PHP
jquery.form.js用法之清空form的方法
2014/03/07 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
js实现带圆角的两级导航菜单效果代码
2015/08/24 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
Bootstrap每天必学之弹出框(Popover)插件
2016/04/25 Javascript
jQuery实现可移动选项的左右下拉列表示例
2016/12/26 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
layui导航栏实现代码
2017/05/19 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
2018/08/09 jQuery
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
12步教你理解Python装饰器
2016/02/25 Python
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
Django模型修改及数据迁移实现解析
2019/08/01 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
Pycharm导入anaconda环境的教程图解
2020/07/31 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
python 对xml解析的示例
2021/02/27 Python
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
运动会广播稿400字
2014/01/25 职场文书
修理厂厂长岗位职责
2014/01/30 职场文书
出纳工作岗位责任制
2014/02/02 职场文书
校庆接待方案
2014/03/18 职场文书
公司经理聘任书
2014/03/29 职场文书
2016年寒假家长评语
2015/10/10 职场文书
nginx内存池源码解析
2021/11/20 Servers
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python