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 相关文章推荐
用YUI做了个标签浏览效果
Feb 20 Javascript
prototype Element学习笔记(篇二)
Oct 26 Javascript
js 实现浏览历史记录示例
Apr 20 Javascript
JavaScript取得键盘按下方向键是哪个的方法
Aug 04 Javascript
AngularJS 输入验证详解及实例代码
Jul 28 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
Oct 11 Javascript
ES2015 Symbol 一种绝不重复的值
Dec 25 Javascript
js 用于检测类数组对象的函数方法
May 02 Javascript
Vue组件之单向数据流的解决方法
Nov 10 Javascript
详解js动态获取浏览器或页面等容器的宽高
Mar 13 Javascript
关于layui flow loading占位图的实现方法
Sep 21 Javascript
Vue项目打包部署到apache服务器的方法步骤
Feb 01 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中copy on write写时复制机制介绍
2014/05/13 PHP
php实现的click captcha点击验证码类实例
2014/09/23 PHP
Laravel推荐使用的十个辅助函数
2019/05/10 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
js 目录列举函数
2008/11/06 Javascript
Mootools 1.2教程 选项卡效果(Tabs)
2009/09/15 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
Vue实现图书管理小案例
2020/12/03 Vue.js
详解vite+ts快速搭建vue3项目以及介绍相关特性
2021/02/25 Vue.js
[00:59]DOTA2荣耀之路1:Doom is back!weapon X!
2018/05/22 DOTA
Python采用raw_input读取输入值的方法
2014/08/18 Python
Python3.遍历某文件夹提取特定文件名的实例
2018/04/26 Python
Python 加密与解密小结
2018/12/06 Python
python钉钉机器人运维脚本监控实例
2019/02/20 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
Python文件操作方法详解
2020/02/09 Python
浅谈python累加求和+奇偶数求和_break_continue
2020/02/25 Python
Pycharm IDE的安装和使用教程详解
2020/04/30 Python
Python高并发解决方案实现过程详解
2020/07/31 Python
Python使用windows设置定时执行脚本
2020/11/12 Python
详解CSS3原生支持div铺满浏览器的方法
2018/08/30 HTML / CSS
台湾旅游网站:雄狮旅游网
2017/08/16 全球购物
美国在线工具商店:Acme Tools
2018/06/26 全球购物
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
法国一家多品牌成衣精品中/高档商店:Graduate Store
2019/08/28 全球购物
西班牙在线药店:DosFarma
2020/03/28 全球购物
安全资金保障制度
2014/01/23 职场文书
房产授权委托书范本
2014/09/22 职场文书
大学生入党积极分子党校学习思想汇报
2014/10/25 职场文书
中学生检讨书1000字
2014/10/28 职场文书
2014年人大工作总结
2014/12/10 职场文书
Mysql案例刨析事务隔离级别
2021/09/25 MySQL
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
2022/04/21 Python