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 相关文章推荐
符合标准的js表单提交的代码
Sep 13 Javascript
JavaScript 错误处理与调试经验总结
Aug 10 Javascript
yepnope.js 异步加载资源文件
Sep 08 Javascript
JS实现为表格动态添加标题的方法
Mar 31 Javascript
JavaScript中Function函数与Object对象的关系
Dec 17 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
Dec 24 Javascript
实用又漂亮的BootstrapValidator表单验证插件
May 30 Javascript
JS图片等比例缩放方法完整示例
Aug 03 Javascript
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
Jul 30 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
Feb 02 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
Jun 19 Javascript
typescript配置alias的详细步骤
Aug 12 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
提问的智慧(2)
2006/10/09 PHP
php获得当前的脚本网址
2007/12/10 PHP
PHP file_exists问题杂谈
2012/05/07 PHP
一个PHP并发访问实例代码
2012/09/06 PHP
PHP查询网站的PR值
2013/10/30 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
2019/07/22 PHP
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
Javascript 二维数组
2009/11/26 Javascript
jQuery实现类似淘宝购物车全选状态示例
2013/06/26 Javascript
使用js画图之饼图
2015/01/12 Javascript
JavaScript日期选择功能示例
2017/01/16 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
Vue下的国际化处理方法
2017/12/18 Javascript
详解webpack-dev-server的简单使用
2018/04/02 Javascript
AngularJs分页插件使用详解
2018/06/30 Javascript
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
JS中通过url动态获取图片大小的方法小结(两种方法)
2018/10/31 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
2018/12/18 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
pageGroup.js实现分页功能
2019/07/27 Javascript
微信小程序实现横向滚动导航栏效果
2019/12/12 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
Python 实现淘宝秒杀的示例代码
2018/01/02 Python
基于Python中求和函数sum的用法详解
2018/06/28 Python
django用户登录和注销的实现方法
2018/07/16 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
python opencv 实现读取、显示、写入图像的方法
2020/06/08 Python
如何一键升级Python所有包
2020/11/05 Python
html5教程制作简单画板代码分享
2013/12/04 HTML / CSS
光盘行动倡议书
2014/02/02 职场文书
班级口号大全
2014/06/09 职场文书
大学生国庆节65周年演讲稿范文
2014/09/25 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书
【海涛教你打DOTA】死灵飞龙第一视角解说
2022/04/01 DOTA