js中escape对应的C#解码函数 UrlDecode


Posted in Javascript onDecember 16, 2012

js中escape对应的C#解码函数 System.Web.HttpUtility.UrlDecode(s) //注意编码
需要注意的几点:
1、HttpUtility.UrlEncode,HttpUtility.UrlDecode是静态方法,而Server.UrlEncode,Server.UrlDecode是实例方法。
2、Server是HttpServerUtility类的实例,是System.Web.UI.Page的属性。
3、用HttpUtility.UrlEncode编码后的字符串和用Server.UrlEncode进行编码后的字符串对象不一样:
例如:

string url="http://search.99read.com/index.aspx?book_search=all&main_str=奥迷尔"; 
Response.Write(HttpUtility.UrlEncode(url)); 
Response.Write("<br>"); 
Response.Write(Server.UrlEncode(url));

输出结果是
http%3a%2f%2fsearch.99read.com%2findex.aspx%3fbook_search%3dall%26main_str%3d%e5%a5%a5%e8%bf%b7%e5%b0%94
http%3a%2f%2fsearch.99read.com%2findex.aspx%3fbook_search%3dall%26main_str%3d%b0%c2%c3%d4%b6%fb
原因:Server.UrlEncode的编码方式是按照本地程序设置的编码方式进行编码的,而HttpUtility.UrlEncode是默认的按照.net的utf-8格式进行编码的。
如果改一下程序:
string url1="http://search.99read.com/index.aspx?book_search=all&main_str=奥迷尔"; 
Response.Write(HttpUtility.UrlEncode(url1,System.Text.Encoding.GetEncoding("GB2312"))); 
Response.Write("<br>"); 
Response.Write(Server.UrlEncode(url1));

输出的结果是
http%3a%2f%2fsearch.99read.com%2findex.aspx%3fbook_search%3dall%26main_str%3d%b0%c2%c3%d4%b6%fb
http%3a%2f%2fsearch.99read.com%2findex.aspx%3fbook_search%3dall%26main_str%3d%b0%c2%c3%d4%b6%fb
3、有时候可能别的系统传递过来的url是用别的编码方式编码的。
介绍自己编写的一个方法,可以获取指定编码格式的QueryString。
public string GetNonNullQueryString(string key,Encoding encoding) 
{ 
//引用System.Collections.Specialized和System.Text命名空间 
string stringValue; 
System.Collections.Specialized.NameValueCollection encodingQueryString; 
//该方法是在2.0中新增的 
encodingQueryString = HttpUtility.ParseQueryString(Request.Url.Query,encoding); 
//'里面的key就是你提交的参数的Key 
return encodingQueryString[key] != null ? encodingQueryString[key].Trim() : ""; 
}

调用
string url = GetNonNullQueryString("url",Encoding.UTF8).Trim();
----------------------------------------------------------------------------------------------

javascript中escape,encodeURI,encodeURIComponent三个函数的区别
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent
1、 传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。
例如:<script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent("http://cang.baidu.com/bruce42")+'">退出</a>');</script>
2、 进行url跳转时可以整体使用encodeURI
例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");
3、 js使用数据时可以使用escape
[Huoho.Com编辑]
例如:搜藏中history纪录。
4、 escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。
最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

Javascript 相关文章推荐
如何设置iframe高度自适应在跨域情况下的可用方法
Sep 06 Javascript
JS window对象的top、parent、opener含义介绍
Dec 03 Javascript
JavaScript中的分号插入机制详细介绍
Feb 11 Javascript
jQuery拖动布局其结果保存到数据库
Oct 09 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
Mar 13 Javascript
让你一句话理解闭包(简单易懂)
Jun 03 Javascript
JavaScript简单实现弹出拖拽窗口(一)
Jun 17 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
Jun 20 Javascript
JS常用倒计时代码实例总结
Feb 07 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
Sep 03 Javascript
Vue的data、computed、watch源码浅谈
Apr 04 Javascript
javascript解析json格式的数据方法详解
Aug 07 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
Dec 16 #Javascript
js弹出的对话窗口永远保持居中显示
Dec 15 #Javascript
JS函数实现动态添加CSS样式表文件
Dec 15 #Javascript
js修改地址栏URL参数解决url参数问题
Dec 15 #Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
Dec 15 #Javascript
JavaScript中OnLoad几种使用方法
Dec 15 #Javascript
Javascript中自动切换焦点实现代码
Dec 15 #Javascript
You might like
php mssql 分页SQL语句优化 持续影响
2009/04/26 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
重新认识php array_merge函数
2014/08/31 PHP
php实现将数组转换为XML的方法
2015/03/09 PHP
PHP扩展mcrypt实现的AES加密功能示例
2019/01/29 PHP
Script的加载方法小结
2011/01/12 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
jquery选择符快速提取web表单数据示例
2014/03/27 Javascript
基于jQuery实现中英文切换导航条效果
2016/09/18 Javascript
jsp 自动编译机制详细介绍
2016/12/01 Javascript
JS+Canvas实现的俄罗斯方块游戏完整实例
2016/12/12 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
2016/12/23 Javascript
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
2017/04/03 jQuery
JavaScrpt中如何使用 cookie 设置查看与删除功能
2017/07/09 Javascript
ES6新增的math,Number方法
2017/08/06 Javascript
详解利用Angular实现多团队模块化SPA开发框架
2017/11/27 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
2018/09/15 Javascript
搭建基于express框架运行环境的方法步骤
2018/11/15 Javascript
js针对图片加载失败的处理方法分析
2019/08/24 Javascript
mpvue实现左侧导航与右侧内容的联动
2019/10/21 Javascript
Python中使用md5sum检查目录中相同文件代码分享
2015/02/02 Python
Python实现比较两个列表(list)范围
2015/06/12 Python
python fabric实现远程部署
2017/01/05 Python
学习python的前途 python挣钱
2019/02/27 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
Hotels.com韩国:海外国内旅行所需的酒店和住宿预订网站
2020/05/08 全球购物
Zatchels官网:英国剑桥包品牌
2021/01/12 全球购物
最美家庭活动方案
2014/08/31 职场文书
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
关爱空巢老人感想
2015/08/11 职场文书
初中团支书竞选稿
2015/11/21 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang
oracle通过存储过程上传list保存功能
2021/05/12 Oracle
动画《新网球王子 U-17 WORLD CUP》希腊队PV公开
2022/04/02 日漫
解决 Redis 秒杀超卖场景的高并发
2022/04/12 Redis