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 tabpanel限制选项卡数量实现思路及代码
Apr 02 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
Jun 04 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
Dec 19 Javascript
javascript实现计时器的简单方法
Feb 21 Javascript
谈一谈JS消息机制和事件机制的理解
Apr 14 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
Dec 30 Javascript
原生JS实现九宫格抽奖效果
Apr 01 Javascript
vue proxyTable 接口跨域请求调试的示例
Sep 12 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
Sep 26 Javascript
Vue.js组件通信的几种姿势
Oct 23 Javascript
vue 点击按钮增加一行的方法
Sep 07 Javascript
vue权限问题的完美解决方案
May 08 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程序?
2006/12/08 PHP
php实现的MySQL通用查询程序
2007/03/11 PHP
php循环创建目录示例分享(php创建多级目录)
2014/03/04 PHP
ThinkPHP字符串函数及常用函数汇总
2014/07/18 PHP
PHP面向对象学习之parent::关键字
2017/01/18 PHP
PHP从数组中删除元素的四种方法实例
2017/05/12 PHP
Yii2框架实现登陆添加验证码功能示例
2018/07/12 PHP
A标签触发onclick事件而不跳转的多种解决方法
2013/06/27 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
跟我学习JScript的Bug与内存管理
2015/11/18 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
nodejs入门教程五:连接数据库的方法分析
2017/04/24 NodeJs
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
动手写一个angular版本的Message组件的方法
2017/12/16 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
2018/11/10 Javascript
JavaScript错误处理操作实例详解
2019/01/04 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
no-vnc和node.js实现web远程桌面的完整步骤
2019/08/11 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
Python3.x版本中新的字符串格式化方法
2015/04/24 Python
Python IDE PyCharm的基本快捷键和配置简介
2015/11/04 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
python读取mysql数据绘制条形图
2020/03/25 Python
C# .NET面试题
2015/11/28 面试题
优秀毕业生推荐信范文
2014/03/07 职场文书
优秀公益广告词大全
2014/03/19 职场文书
群众路线教育实践活动方案
2014/10/31 职场文书
2014年超市工作总结
2014/11/19 职场文书
幼儿园六一儿童节活动总结
2015/02/10 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
php字符串倒叙
2021/04/01 PHP
Python代码风格与编程习惯重要吗?
2021/06/03 Python
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js