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 相关文章推荐
ExtJS Window 最小化的一种方法
Nov 18 Javascript
学习js在线html(富文本,所见即所得)编辑器
Dec 18 Javascript
解析js原生方法创建表格效率测试
Jul 08 Javascript
jquery自动切换tabs选项卡的具体实现
Dec 24 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
Dec 05 Javascript
JavaScript中指定函数名称的相关方法
Jun 04 Javascript
Javascript复制实例详解
Jan 28 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
Oct 10 Javascript
前端js弹出框组件使用方法
Aug 24 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
Feb 28 Javascript
js实现抽奖效果
Mar 27 Javascript
今天,小程序正式支持 SVG
Apr 20 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
twig模板常用语句实例小结
2016/02/04 PHP
PHP访问数据库集群的方法小结
2016/03/14 PHP
php 的反射详解及示例代码
2016/08/25 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
2017/04/15 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
JavaScript OOP类与继承
2009/11/15 Javascript
js自定义事件代码说明
2011/01/31 Javascript
JS中的异常处理方法分享
2013/12/22 Javascript
解决jquery版本冲突的有效方法
2014/09/02 Javascript
Vue-resource实现ajax请求和跨域请求示例
2017/02/23 Javascript
js实现股票实时刷新数据案例
2017/05/14 Javascript
JS创建Tag标签的方法详解
2017/06/09 Javascript
利用JS做网页特效_大图轮播(实例讲解)
2017/08/09 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
解决Vue不能检测数组或对象变动的问题
2018/02/24 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
在 Vue.js中优雅地使用全局事件的方法
2019/02/01 Javascript
微信小程序获取公众号文章列表及显示文章的示例代码
2020/03/10 Javascript
Vue项目中使用mock.js的完整步骤
2021/01/12 Vue.js
重命名批处理python脚本
2013/04/05 Python
零基础写python爬虫之爬虫的定义及URL构成
2014/11/04 Python
Python遍历目录的4种方法实例介绍
2015/04/13 Python
python计算一个序列的平均值的方法
2015/07/11 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
python中获得当前目录和上级目录的实现方法
2017/10/12 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
Python3 selenium 实现QQ群接龙自动化功能
2020/04/17 Python
Python垃圾回收机制三种实现方法
2020/04/27 Python
python线性插值解析
2020/07/05 Python
英国女士和男士时尚服装网上购物:Top Labels Online
2018/03/25 全球购物
Pandora德国官网:购买潘多拉手链、戒指、项链和耳环
2020/02/20 全球购物
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android
java项目构建Gradle的使用教程
2022/03/24 Java/Android