js中escape对应的C#解码函数UrlDecode
2023-06-13 09:14:42 时间
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进行编码后的字符串对象不一样:
例如:
复制代码代码如下:
需要注意的几点:
1、HttpUtility.UrlEncode,HttpUtility.UrlDecode是静态方法,而Server.UrlEncode,Server.UrlDecode是实例方法。
2、Server是HttpServerUtility类的实例,是System.Web.UI.Page的属性。
3、用HttpUtility.UrlEncode编码后的字符串和用Server.UrlEncode进行编码后的字符串对象不一样:
例如:
stringurl="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格式进行编码的。
如果改一下程序:
stringurl1="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。
publicstringGetNonNullQueryString(stringkey,Encodingencoding)
{
//引用System.Collections.Specialized和System.Text命名空间
stringstringValue;
System.Collections.Specialized.NameValueCollectionencodingQueryString;
//该方法是在2.0中新增的
encodingQueryString=HttpUtility.ParseQueryString(Request.Url.Query,encoding);
//"里面的key就是你提交的参数的Key
returnencodingQueryString[key]!=null?encodingQueryString[key].Trim():"";
}
调用:
stringurl=GetNonNullQueryString("url",Encoding.UTF8).Trim();
----------------------------------------------------------------------------------------------
javascript中escape,encodeURI,encodeURIComponent三个函数的区别
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent
1、传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。
例如:<scriptlanguage="javascript">document.write("<ahref="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
相关文章
- js面试题及答案2020_JS面试题大全
- C# DateTimePicker:日期时间控件「建议收藏」
- php 中js跳转页面跳转页面,js跳转代码_PHP页面跳转 Js页面跳转代码[通俗易懂]
- c# mysql executenonquery_C#与数据库访问技术总结(八)之ExecuteNonQuery方法
- 在C#中如何List去除重复元素?
- 【JS 逆向百例】猿人学系列 web 比赛第二题:js 混淆 - 动态 cookie,详细剖析
- C# 调用js库的方法
- 【Unity3D】Unity 脚本 ② ( Visual Studio 2019 中的 Unity 编译环境配置 | Unity 编辑器关联外部 C# 脚本编辑器 Visual Studio )
- clipboard.js:最轻便的复制页面内容到剪切板的JS
- 【源码】PDF.js批注注释插件库(纯JS). 创建和保存PDF批注(PDF 高亮/签名/插图/截屏/文本框/画笔/多边形)-pdf.js
- 操作mysql的C#类详解数据库
- JS实时链接Oracle让数据库访问更便捷(js实时连接oracle)
- 使用Oracle和JS开发新一代应用仿真世界(oracle js)
- C#中string与byte[]的转换帮助类-.NET教程,C#语言
- JS函数验证总结(方便js客户端输入验证)
- C#操作符之三元操作符浅析
- 深入C#内存管理以及优化的方法详解
- C#禁止应用程序多次启动的实例
- c#各种Timer类的区别与用法介绍
- c#根据文件大小显示文件复制进度条实例
- c#获取相同概率随机数的算法代码
- C#Memcached缓存用法实例详解
- C#中Invoke和BeginInvoke的真正涵义
- C#采用FileSystemWatcher实现监视磁盘文件变更的方法
- C#执行js动态编译的方法
- C#中的文件路径获取函数和文件名字获取函数小结