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 相关文章推荐
jscript之Open an Excel Spreadsheet
Jun 13 Javascript
php对mongodb的扩展(小试牛刀)
Nov 11 Javascript
js为鼠标添加右击事件防止默认的右击菜单弹出
Jul 29 Javascript
jquery插件validation实现验证身份证号等
Jun 04 Javascript
基于javascript实现单选及多选的向右和向左移动实例
Jul 25 Javascript
javascript中call,apply,bind函数用法示例
Dec 19 Javascript
jquery ajaxfileupload异步上传插件使用详解
Feb 08 Javascript
socket.io学习教程之基本应用(二)
Apr 29 Javascript
Vue 让元素抖动/摆动起来的实现代码
May 31 Javascript
JS引用传递与值传递的区别与用法分析
Jun 01 Javascript
webpack4之如何编写loader的方法步骤
Jun 06 Javascript
jquery实现简单每周轮换的日历
Sep 10 jQuery
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中的fopen()函数用打开文件模式说明
2013/06/20 PHP
一个漂亮的php验证码类(分享)
2013/08/06 PHP
php延迟静态绑定实例分析
2015/02/08 PHP
部署PHP时的4个配置修改说明
2015/10/19 PHP
php json中文编码为null的解决办法
2016/12/14 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
div层的移动及性能优化
2010/11/16 Javascript
window.open不被拦截的实现代码
2012/08/22 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
javascript操作css属性
2013/12/30 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
全面解析Bootstrap表单使用方法(表单样式)
2015/11/24 Javascript
AngularJS中watch监听用法分析
2016/11/04 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
jQuery的三种bind/One/Live/On事件绑定使用方法
2017/02/23 Javascript
解决vue数组中对象属性变化页面不渲染问题
2018/08/09 Javascript
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
python中关于时间和日期函数的常用计算总结(time和datatime)
2013/03/08 Python
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
2014/11/06 Python
win10环境下python3.5安装步骤图文教程
2017/02/03 Python
python如何对实例属性进行类型检查
2018/03/20 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
Python autoescape标签用法解析
2020/01/17 Python
详解Django3中直接添加Websockets方式
2020/02/12 Python
Python Selenium安装及环境配置的实现
2020/03/17 Python
python怎么判断素数
2020/07/01 Python
Python如何实现Paramiko的二次封装
2021/01/30 Python
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
法国足球商店:Footcenter
2019/07/06 全球购物
校庆标语集锦
2014/06/25 职场文书
英文慰问信范文
2015/03/24 职场文书
学校就业保障协议书
2019/06/24 职场文书
基于Python实现射击小游戏的制作
2022/04/06 Python