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之卸载鼠标事件的代码
May 14 Javascript
javascript loadScript异步加载脚本示例讲解
Nov 14 Javascript
jQuery选择器querySelector的使用指南
Jan 23 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
Feb 10 Javascript
Bootstrap CSS组件之导航条(navbar)
Dec 17 Javascript
BootStrap 弹出层代码
Feb 09 Javascript
jQuery实现弹窗居中效果类似alert()
Feb 27 Javascript
JavaScript实现反转字符串的方法详解
Apr 27 Javascript
基于rem的移动端响应式适配方案(详解)
Jul 07 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
Mar 13 Javascript
Vue数字输入框组件的使用方法
Oct 19 Javascript
详解Nuxt内导航栏的两种实现方式
Apr 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
PHP实现的封装验证码类详解
2013/06/18 PHP
php防止伪造数据从地址栏URL提交的方法
2014/08/24 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
2017/08/02 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
js获取微信版本号的方法
2015/05/12 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
JavaScript File API文件上传预览
2016/02/02 Javascript
一次$.getJSON不执行的简单记录
2016/07/19 Javascript
对javascript继承的理解
2016/10/11 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
vue实现打印功能的两种方法
2018/09/07 Javascript
es6基础学习之解构赋值
2018/12/10 Javascript
VUE简单的定时器实时刷新的实现方法
2019/01/20 Javascript
Python版实现微信公众号扫码登陆
2020/05/28 Javascript
jQuery实现简单日历效果
2020/07/05 jQuery
vue使用echarts实现水平柱形图实例
2020/09/09 Javascript
JavaScript实现网页下拉菜单效果
2020/11/20 Javascript
numpy.transpose对三维数组的转置方法
2018/04/17 Python
基于anaconda下强大的conda命令介绍
2018/06/11 Python
深入了解Django View(视图系统)
2019/07/23 Python
Python PyInstaller库基本使用方法分析
2019/12/12 Python
python编写实现抽奖器
2020/09/10 Python
新西兰演唱会和体育门票网站:Ticketmaster新西兰
2017/10/07 全球购物
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
群胜软件Java笔试题
2012/09/29 面试题
国外的一些J2EE面试题一
2012/10/13 面试题
英语文学专业学生的自我评价
2013/10/31 职场文书
音乐兴趣小组活动总结
2014/07/07 职场文书
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
个人股份合作协议书
2014/10/24 职场文书
群众路线教育实践活动学习笔记
2014/11/05 职场文书
董事长秘书工作总结
2015/08/14 职场文书
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python