Asp.net中Response.Charset与Response.ContentEncoding区别示例分析
本文以示例形式分析了Asp.net中Response.Charset与Response.ContentEncoding的区别,分享给大家供大家参考。具体如下:
1.Response.Charset
ASP.NET中示例:
<%@PageCodePage=936%>
CodePage告诉IIS按什么编码来读取QueryString,按什么编码转换数据库中的内容……
2.Response.ContentEncoding
获取或设置输出流的HTTP字符集。
Response.Charset
获取或设置输出流的HTTP字符集。微软对ContentEncoding、Charset的解释是一字不差,其实可以这样理解:ContentEncoding是标识这个内容是什么编码的,而Charset是告诉客户端怎么显示的。
我们可以做一个示例来理解:
示例1.
Response.ContentEncoding=System.Text.Encoding.GetEncoding("gb2312"); Response.Charset="utf-8"; Response.Write("毛票票");
然后用浏览器打开网页,可以发现是乱码,可是用记事本查看源文件,又发现不是乱码。这就说明了:ContentEncoding是管字节流到文本的,而Charset是管在浏览器中显示的。
示例2.
Response.ContentEncoding=System.Text.Encoding.GetEncoding("gb2312");
通过Fidller,发现HTTP头中是:text/html;charset=gb2312。说明没有指定Charset时,就用ContentEncoding的Charset作为charset。
示例3.
Response.ContentEncoding=System.Text.Encoding.GetEncoding("gb2312"); Response.Charset="123-8";
HTTP头中是:text/html;charset=123-8。网页显示正常,说明如果charset错误,仍然以ContentEncoding的Charset作为charset。
示例4.
Response.ContentEncoding=System.Text.Encoding.GetEncoding("gb2312"); Response.Charset="";
HTTP头中是:text/html;。HTTP头中没有charset,网页显示正常,说明HTTP头中没有charset,仍然以ContentEncoding的Charset作为charset。
补充:
一.Response.ContentType
获取或设置输出流中HTTP的MIME类型,比如:text/xml、text/html、application/ms-word。浏览器根据不同的内容启用不同的引擎,比如IE6及以上版本中就会自动将XML做成树状显示。
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
这是HTML中的标签,不能用在XML、JS等文件中,它是告诉浏览器网页的MIME、字符集。当前面的相关内容没有指定时,浏览器通过此来判断。
二.使用流形成一个word文件例子
protectedvoidbtnResponseWord_Click(objectsender,EventArgse) { Response.Clear();//清空无关信息 Response.Buffer=true;//完成整个响应后再发送 Response.Charset="GB2312";//设置输出流的字符集-中文 Response.AppendHeader("Content-Disposition","attachment;filename=Report.doc");//追加头信息 Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");//设置输出流的字符集 Response.ContentType="application/ms-word";//输出流的MIME类型 Response.Write(TextBox1.Text); Response.End();//停止输出 }
三.Response.AppendHeader使用
@文件下载,指定默认名
Response.AddHeader("content-type","application/x-msdownload"); Response.AddHeader("Content-Disposition","attachment;filename=要下载的文件名.rar");
@刷新页面
Response.AddHeader"REFRESH","60;URL=newpath/newpage.asp"
这等同于客户机端<META>元素:
<METAHTTP-EQUIV="REFRESH","60;URL=newpath/newpage.asp"
@页面转向
Response.Status="302ObjectMoved" Response.Addheader"Location","newpath/newpage.asp"
这等同于使用Response.Redirect方法:
Response.Redirect"newpath/newpage.asp"
@强制浏览器显示一个用户名/口令对话框
Response.Status="401Unauthorized" Response.Addheader"WWW-Authenticate","BASIC"
强制浏览器显示一个用户名/口令对话框,然后使用BASIC验证把它们发送回服务器(将在本书后续部分看到验证方法)。
@如何让网页不缓冲
Response.Expires=0 Response.ExpiresAbsolute=Now()-1 Response.Addheader"pragma","no-cache" Response.Addheader"cache-control","private" Response.CacheControl="no-cache
希望本文所述的Asp.net中Response.Charset与Response.ContentEncoding的区别及相关用法对大家Asp.net程序设计有所帮助。