Server对象 HttpUtility.UrlDecode |UrlEncode |HtmlEncode
2014-02-14 19:23
507 查看
<>
string msg = System.IO.File.ReadAllText(filePath, System.Text.Encoding.Default);
假如说,我现在要指定一个gb2312的编码,Encoding. 又点不出来,怎么办?
可以用这种方式来指定: Encoding.GetEncoding("gb2312");
UrlEncoden是将一些HTTP协议无法直接识别的汉字进行编码,这样HTTP协议就能识别了。
UrlEncoden是怎么编码的呢?首先找到需要编码的字符的ASCII码,比如‘/’的ASCII码是的十进制数值是47然后转换成16进制就是2f 然后再2f前面加一个%就可以了
所以,一个'/'经过UrlEncoden编码后,就是%2f 而汉字不同的码表下表现形式不一样,所以就不做举列了。
而HttpEncoden则是对写一些javascript字符串进行编码,将<> 转换成<,> 这是他们的区别。
HttpEncoden
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class Server对象_server : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //Server对象是 context的一个属性,是 HttpServerUtility类的一个对象 Server.ScriptTimeout = 90; //ScriptTimeout属性用于设置脚本程序执行的时间,这里将脚本程序执行时间设为90秒。适当地设置脚本程序的ScriptTimeout可以提高整个Web应用程序的效率。语法如下:Server.ScriptTimeout=time;(以s(秒)为单位)。在调试模式下(也就是说,如果在web.config中将debug属性设置为'true'),server.scripttimeout的默认取值为30000000秒,大约是一年的时间,如果不是在调试模式下,server.scripttimeout的取值为90秒 Response.Write(Server.MachineName + "</br>"); //输出服务器机器名。 Response.Write(Server.ScriptTimeout); Response.Write("<P>这是Execute执行之前</p>"); Server.Execute("~/Request对象/Request对象.aspx");//将“Request对象.aspx”页面输出的内容添加到当前页面之中 Response.Write("<P>这是Execute执行之后"); //Server.Transfer("~/Request对象/Request对象.aspx");//内部重定向请求。context.Server.Transfer("~/About.aspx")将用户请求重定向给~/About.aspx处理,是服务器内部的接管,浏览器是意识不到这个接管的(所以HTTP响应报文状态码是200 OK 而不是302 重定向),因此浏览器地址栏不会像Response.Redirect("~/About.aspx")那样经过两次响应,它一次响应就够了(是一次HTTP请求)。所以浏览器地址栏并不会发生变化(注意Server.Transfer()是服务器内部接管,因此它不能像Response.Redirect()那样定义到外部网站) //Response.Redirect("~/About.aspx"); Response.Write(HttpUtility.HtmlEncode("<P>你好中国</p>")); //或者写成Response.Write(Server.HtmlEncode("<P>你好中国</p>"))都可以。其中作用主要是将<转换为< , 将>转换为> 以达到可以在网页里输出<>的目的,而不是当成一个HTML标记。 主要是防止跨站脚本漏洞,比如XSS漏洞攻击。 /* HtmlEncode是编辑HTML代码的。而UrlEncode是编辑超链接的,注意不要搞混了。 //字符串的编码与解码 //UrlDecode主要是解码中文字符的。比如你输入“%e4%b8%ad%e6%96%87”用UrlDecode来解码就会得到“中文”两个字。而Url主要是编码中文字符的,比如你输入“中文”通过UrlEncode进行编码就会输出“%e4%b8%ad%e6%96%87” Response.Write(Server.UrlDecode("中文"));//输出:中文 Response.Write(Server.UrlEncode("中文"));//输出:%e4%b8%ad%e6%96%87 Response.Write(Server.UrlEncode("english"));//输出:english Response.Write(Server.UrlDecode("english"));//输出:english */ Response.Write(HttpUtility.UrlDecode("%e4%b8%ad%e6%96%87"));//输出结果为“中文” } }有的时候从一个文件中读取数据的时候,可能存在中午乱码的问题,这时候就需进行编码处理:
string msg = System.IO.File.ReadAllText(filePath, System.Text.Encoding.Default);
假如说,我现在要指定一个gb2312的编码,Encoding. 又点不出来,怎么办?
可以用这种方式来指定: Encoding.GetEncoding("gb2312");
UrlEncoden是将一些HTTP协议无法直接识别的汉字进行编码,这样HTTP协议就能识别了。
UrlEncoden是怎么编码的呢?首先找到需要编码的字符的ASCII码,比如‘/’的ASCII码是的十进制数值是47然后转换成16进制就是2f 然后再2f前面加一个%就可以了
所以,一个'/'经过UrlEncoden编码后,就是%2f 而汉字不同的码表下表现形式不一样,所以就不做举列了。
而HttpEncoden则是对写一些javascript字符串进行编码,将<> 转换成<,> 这是他们的区别。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApp { public partial class WebForm1 : System.Web.UI.Page { //其实this.Server.UrlEncoden 是对HttpUtility.UrlEncoden的封装,他里面调用的其实就是 HttpUtility.UrlEncode //所以Server.UrlEncoden与HttpUtility.UrlEncoden是一样的。 protected void Page_Load(object sender, EventArgs e) { string ss = "https://www.baidu.com/?userNmae=张三"; this.Response.Write(ss); this.Response.Write("<br/>"); //一般我们不会对整个Url都进行UrlEncode编码 //this.Response.Write(HttpUtility.UrlEncode(ss));// this.Response.Write(this.Server.UrlEncode(ss)); //我们仅仅是对一些中文,或者url中的一些需要进行实际输出时“转义符” this.Response.Write("https://www.baidu.com/?userNmae=" + this.Server.UrlEncode("张三")); } } }
HttpEncoden
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApp { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string s = "<script>alert('中毒了');window.location='http://www.baidu.com';</script>"; //this.Response.Write(s); //这里直接弹出一个对话框“中毒了”然后跳转到百度页面了。即执行了这段js代码 string ss = this.Server.HtmlEncode(s); this.Response.Write(ss);//而这里是输出<script>alert('中毒了');window.location='http://www.baidu.com';</script> 这段字符串 } } }
相关文章推荐
- Server.UrlEncode、HttpUtility.UrlDecode的区别[两篇文章]
- Server.UrlEncode、HttpUtility.UrlDecode的区别
- Server.UrlEncode、HttpUtility.UrlDecode的区别
- javascript中文编码/解析与C#ASP.NET中文编码/解析 C#: Server.UrlEncode() HttpUtility.UrlEncode() javascript: escape() encodeURI() encod
- (转)关于HttpUtility.UrlEncode,HttpUtility.UrlDecode,Server.UrlEncode,Server.UrlDecode
- Server.HtmlEncode vs HttpUtility.HtmlEncode
- Server对象之HtmlEncode和UrlEncode的用法
- HttpServerUtility Server.HtmlEncode与Server.HtmlDecode
- 关于HttpUtility.UrlEncode,HttpUtility.UrlDecode,Server.UrlEncode,Server.UrlDecode
- (转)关于HttpUtility.UrlEncode,HttpUtility.UrlDecode,Server.UrlEncode,Server.UrlDecode
- Server.UrlEncode、HttpUtility.UrlDecode的区别
- Server.UrlEncode、HttpUtility.UrlDecode的区别
- HttpUtility.UrlEncode、HttpUtility.UrlDecode、Server.UrlEncode、Server.UrlDecode的区分与应用
- Server.UrlEncode、HttpUtility.UrlDecode的区别
- (转)关于HttpUtility.UrlEncode,HttpUtility.UrlDecode,Server.UrlEncode,Server.UrlDecode
- Server.UrlEncode、HttpUtility.UrlDecode的区别
- HttpUtility.UrlEncode、HttpUtility.UrlDecode、Server.UrlEncode、Server.UrlDecode的区分与应用
- 关于HttpUtility.UrlEncode,HttpUtility.UrlDecode,Server.UrlEncode,Server.UrlDecode
- (转)关于HttpUtility.UrlEncode,HttpUtility.UrlDecode,Server.UrlEncode,Server.UrlDecode
- Server.UrlEncode、HttpUtility.UrlDecode的区别