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
Nov 25 Javascript
一个不错的用JavaScript实现的UBB编码函数
Mar 09 Javascript
JavaScript修改css样式style
Apr 15 Javascript
jquery显示和隐藏div特效实例
Feb 27 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
Aug 08 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
Sep 01 Javascript
获取当前按钮或者html的ID名称实例(推荐)
Jun 23 Javascript
详解tween.js 中文使用指南
Jan 05 Javascript
mui框架 页面无法滚动的解决方法(推荐)
Jan 25 Javascript
JS使用正则表达式判断输入框失去焦点事件
Oct 16 Javascript
vue 使用v-for进行循环的实例代码详解
Feb 19 Javascript
vue 计算属性和侦听器的使用小结
Jan 25 Vue.js
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
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
2017/06/19 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
PHP数组array类常见操作示例
2020/05/15 PHP
js实现的复制兼容chrome和IE
2014/04/03 Javascript
JS+CSS实现六级网站导航主菜单效果
2015/09/28 Javascript
jQuery ajax方法传递中文时出现中文乱码的解决方法
2016/07/25 Javascript
基于jQuery实现的单行公告活动轮播效果
2017/08/23 jQuery
Node.JS使用Sequelize操作MySQL的示例代码
2017/10/09 Javascript
jQuery实现输入框的放大和缩小功能示例
2018/07/21 jQuery
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
Python中的rjust()方法使用详解
2015/05/19 Python
Python简单实现enum功能的方法
2016/04/25 Python
请不要重复犯我在学习Python和Linux系统上的错误
2016/12/12 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
Python模块搜索路径代码详解
2018/01/29 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
解决Pycharm无法import自己安装的第三方module问题
2018/05/18 Python
实例详解Matlab 与 Python 的区别
2019/04/26 Python
OpenCV中VideoCapture类的使用详解
2020/02/14 Python
Ubuntu中配置TensorFlow使用环境的方法
2020/04/21 Python
H&M美国官网:欧洲最大的服饰零售商
2016/09/07 全球购物
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
介绍一下linux的文件系统
2012/03/20 面试题
调解协议书
2014/04/16 职场文书
协议书格式
2014/04/23 职场文书
物流专业自荐信
2014/05/23 职场文书
党员民主评议个人总结
2014/10/20 职场文书
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
2015社区个人工作总结范文
2015/05/13 职场文书
幼儿园庆六一主持词
2015/06/30 职场文书
超外差式晶体管收音机的组装与统调
2021/04/22 无线电