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 相关文章推荐
原生js实现半透明遮罩层效果具体代码
Jun 06 Javascript
jQuery之按钮组件的深入解析
Jun 19 Javascript
jQuery on方法传递参数示例
Dec 09 Javascript
浅谈javascript的调试
Jan 28 Javascript
js实现类似新浪微博首页内容渐显效果的方法
Apr 10 Javascript
javascript获取本机操作系统类型的方法
Aug 13 Javascript
简单分析javascript中的函数
Sep 10 Javascript
Vue $emit $refs子父组件间方法的调用实例
Sep 12 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
Dec 10 Javascript
vue 实现小程序或商品秒杀倒计时
Apr 14 Javascript
详解Vue-Router源码分析路由实现原理
May 15 Javascript
vant中的toast层级改变操作
Nov 04 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+MySQL5.0中文乱码解决方法
2006/11/20 PHP
在PHP里得到前天和昨天的日期的代码
2007/08/16 PHP
php压缩HTML函数轻松实现压缩html/js/Css及注意事项
2013/01/27 PHP
php下载文件源代码(强制任意文件格式下载)
2014/05/09 PHP
通过PHP实现用户注册后邮箱验证激活
2020/11/10 PHP
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
javascript动态加载二
2012/08/22 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
2015/12/12 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
js 动态给元素添加、移除事件的实现方法
2016/07/19 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
AngularJS表单验证中级篇(3)
2016/09/28 Javascript
Vue.js实现无限加载与分页功能开发
2016/11/03 Javascript
js实现右键自定义菜单
2016/12/03 Javascript
详谈for循环里面的break和continue语句
2017/07/20 Javascript
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
python求素数示例分享
2014/02/16 Python
python获取指定网页上所有超链接的方法
2015/04/04 Python
python使用folium库绘制地图点击框
2018/09/21 Python
python用列表生成式写嵌套循环的方法
2018/11/08 Python
Python图像处理PIL各模块详细介绍(推荐)
2019/07/17 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
Python request post上传文件常见要点
2020/11/20 Python
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
商场消防管理制度
2014/01/12 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
慈善募捐倡议书
2015/04/27 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
Go语言读取txt文档的操作方法
2022/01/22 Golang
Java实现给Word文件添加文字水印
2022/02/15 Java/Android