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 相关文章推荐
JavaScript prototype对象的属性说明
Mar 13 Javascript
jquery div 居中技巧应用介绍
Nov 24 Javascript
12种不宜使用的Javascript语法整理
Nov 04 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
Jun 15 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
Jun 19 Javascript
Vue-Router实现页面正在加载特效方法示例
Feb 12 Javascript
js实现复制功能(多种方法集合)
Jan 06 Javascript
JavaScript函数apply()和call()用法与异同分析
Aug 10 Javascript
vue轻量级框架无法获取到vue对象解决方法
May 12 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
Jul 27 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
Aug 12 Javascript
浅谈vue2的$refs在vue3组合式API中的替代方法
Apr 18 Vue.js
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自定义函数返回多个值
2006/11/26 PHP
PHP syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
php入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
深入php数据采集的详解
2013/06/02 PHP
PHP实现数组递归转义的方法
2014/08/28 PHP
php+ajax制作无刷新留言板
2015/10/27 PHP
[原创]站长必须要知道的javascript广告代码
2007/05/30 Javascript
js获取URL的参数的方法(getQueryString)示例
2013/09/29 Javascript
js时间戳格式化成日期格式的多种方法
2013/11/11 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
如何用js实现鼠标向上滚动时浮动导航
2016/07/18 Javascript
AngularJS 中的Promise --- $q服务详解
2016/09/14 Javascript
Angular学习笔记之angular的$filter服务浅析
2016/11/12 Javascript
Vue.extend构造器的详解
2017/07/17 Javascript
vue脚手架搭建过程图解
2018/06/06 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
2018/08/22 Javascript
javascript中函数的写法实例代码详解
2018/10/28 Javascript
详解jquery和vue对比
2019/04/16 jQuery
[52:52]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第三局
2016/02/27 DOTA
详解Python3.1版本带来的核心变化
2015/04/07 Python
Python实现统计文本文件字数的方法
2017/05/05 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
python MysqlDb模块安装及其使用详解
2018/02/23 Python
python traceback捕获并打印异常的方法
2018/08/31 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
万豪国际住宅与别墅集团:Homes & Villas by Marriott International
2020/10/08 全球购物
得到Class的三个过程是什么
2012/08/10 面试题
初中考试作弊检讨书
2014/02/01 职场文书
新闻学专业职业生涯规划范文:我的人生我做主
2014/09/12 职场文书
老干部工作汇报材料
2014/10/28 职场文书
党的群众路线教育实践活动个人整改措施落实情况
2014/11/04 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
原告离婚代理词
2015/05/23 职场文书
就业推荐表院系意见
2015/06/05 职场文书