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 相关文章推荐
使用JQUERY Tabs插件宿主IFRAMES
Jan 01 Javascript
推荐11款jQuery开发的复选框和单选框美化插件
Aug 02 Javascript
js设置function参数默认值(适合没有传参情况)
Feb 24 Javascript
JavaScript分页功能的实现方法
Apr 25 Javascript
基于jQuery实现返回顶部实例代码
Jan 01 Javascript
谷歌Chrome浏览器扩展程序开发小记
Jan 06 Javascript
浅析JSONP技术原理及实现
Jun 08 Javascript
jquery mobile实现可折叠的导航按钮
Mar 11 Javascript
Node.js使用gm拼装sprite图片
Jul 04 Javascript
利用node.js实现反向代理的方法详解
Jul 24 Javascript
PHP读取远程txt文档到数组并实现遍历
Aug 25 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
Nov 07 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
yii框架中的Url生产问题小结
2012/01/16 PHP
解析PHP 5.5 新特性
2013/07/02 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
2013/08/08 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
laravel model 两表联查示例
2019/10/24 PHP
phpStudy vscode 搭建debug调试的教程详解
2020/07/28 PHP
BOOM vs RR BO3 第一场2.13
2021/03/10 DOTA
jQuery Dialog 弹出层对话框插件
2010/08/09 Javascript
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
2015/01/09 Javascript
jquery实现聚光灯效果的方法
2015/02/06 Javascript
jQuery.extend 函数及用法详细
2015/09/06 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
jQuery+正则+文本框只能输入数字的实现方法
2016/10/07 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
jQuery EasyUI Draggable拖动组件
2017/03/01 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
2020/12/10 Vue.js
剖析Python的Twisted框架的核心特性
2016/05/25 Python
Python爬取网页中的图片(搜狗图片)详解
2017/03/23 Python
Python 实现取多维数组第n维的前几位
2019/11/26 Python
Python Numpy 控制台完全输出ndarray的实现
2020/02/19 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
Web页面中八种创建多列等高(等高列布局)的实现技术
2012/12/24 HTML / CSS
暇步士官网:Hush Puppies
2016/09/22 全球购物
酒店led欢迎词
2014/01/09 职场文书
九年级家长会邀请函
2014/01/15 职场文书
舞蹈教师自荐信
2014/01/27 职场文书
《罗布泊,消逝的仙湖》教学反思
2014/03/01 职场文书
学雷锋志愿者活动总结
2014/06/27 职场文书
计算机网络专业自荐信
2014/07/04 职场文书
旅游与酒店管理专业求职信
2014/07/21 职场文书
剖析后OpLog订阅MongoDB的数据变更就没那么难了
2022/02/24 MongoDB
MySQL派生表联表查询实战过程
2022/03/20 MySQL