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 getElementsByClassName 和js取地址栏参数
Jan 02 Javascript
node+express+ejs制作简单页面上手指南
Nov 26 Javascript
通过伪协议解决父页面与iframe页面通信的问题
Apr 05 Javascript
跟我学习javascript的定时器
Nov 19 Javascript
JavaScript中创建对象的模式汇总
Apr 19 Javascript
vue 实现通过手机发送短信验证码注册功能
Apr 19 Javascript
Vue.use源码学习小结
Jun 20 Javascript
React Router V4使用指南(精讲)
Sep 17 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
Jun 18 jQuery
layui的面包屑或者表单不显示的解决方法
Sep 05 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
Sep 28 Javascript
jquery传参及获取方式(两种方式)
Feb 13 jQuery
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定时自动生成静态HTML的实现代码
2010/06/20 PHP
浅析PHP中的UNICODE 编码与解码
2013/06/29 PHP
php函数实现判断是否移动端访问
2015/03/03 PHP
php pdo操作数据库示例
2017/03/10 PHP
phpstudy的php版本自由修改的方法
2017/10/18 PHP
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
jQuery实现密保互斥问题解决方案
2013/08/16 Javascript
深入理解javascript中defer的作用
2013/12/11 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
Nodejs学习笔记之入门篇
2015/04/16 NodeJs
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
2015/10/26 Javascript
javascript实现秒表计时器的制作方法
2017/02/16 Javascript
微信小程序tabBar用法实例详解
2017/12/04 Javascript
JS实现的视频弹幕效果示例
2018/08/17 Javascript
微信小程序使用for循环动态渲染页面操作示例
2018/12/25 Javascript
[04:00]DOTA2解说界神雕侠侣 CJ第四天谷子现场过生日
2013/07/30 DOTA
python实现2048小游戏
2015/03/30 Python
Python获取运行目录与当前脚本目录的方法
2015/06/01 Python
Python实现脚本锁功能(同时只能执行一个脚本)
2017/05/10 Python
详解python string类型 bytes类型 bytearray类型
2017/12/16 Python
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
记一次python 内存泄漏问题及解决过程
2018/11/29 Python
Python 复平面绘图实例
2019/11/21 Python
python实现读取类别频数数据画水平条形图案例
2020/04/24 Python
如何在pycharm中安装第三方包
2020/10/27 Python
蒂芙尼澳大利亚官方网站:Tiffany&Co. Australia
2017/08/27 全球购物
美国网上眼镜供应商:LEOTONY(眼镜、RX太阳镜和太阳镜)
2017/10/31 全球购物
《鞋匠的儿子》教学反思
2014/03/02 职场文书
遗体告别仪式主持词
2014/03/20 职场文书
软件项目开发计划书
2014/05/01 职场文书
计算机专业自荐信
2014/05/24 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
2014年电厂个人工作总结
2014/11/27 职场文书
2015羊年春节慰问信
2015/02/14 职场文书
房产电话营销开场白
2015/05/29 职场文书
会计工作自我鉴定范文
2019/06/21 职场文书