Response响应体相关的属性

Response.Charset     ------- 显示方式字符集
ASP.NET 中示例:
<%@ Page CodePage=936 %>

CodePage 告诉 IIS 按什么编码来读取 QueryString,按什么编码转换数据库中的内容……

Response.ContentEncoding               ------ 内容编码方式字符集

获取或设置输出流的 HTTP 字符集。

Response.Charset

获取或设置输出流的 HTTP 字符集。微软对 ContentEncoding、Charset 的解释是一字不差,其实可以这样理解:ContentEncoding 是标识这个内容是什么编码的,而 Charset 是告诉客户端怎么显示的。

我们可以做一个实验来理解:

实验1.

Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
Response.Charset = "utf-8"; 
Response.Write("千一网络");          // 响应流中写入“字符串”
然后用浏览器打开网页,可以发现是乱码,可是用记事本查看源文件(内容编码gb2312,我们是能够看到的),又发现不是乱码。这就说明了:ContentEncoding 是管(字节流到文本的),而 Charset 是管(在浏览器中显示的)。

实验2.

Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
通过 Fidller,发现 HTTP 头中是:text/html; charset=gb2312。说明没有指定 Charset 时,就用 ContentEncoding 的 Charset 作为 charset。

Response.ContentType                  ------输出对象的内容处理方式,像文本text,有xml,html处理方式

获取或设置输出流中 HTTP 的 MIME 类型,比如:text/xml、text/html、application/ms-word。浏览器根据不同的内容启用不同的引擎,比如 IE6 及以上版本中就会自动将 XML 做成树状显示。

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

这是 HTML 中的标签,不能用在 XML、JS 等文件中,它是告诉浏览器网页的 MIME、字符集。当前面的相关内容没有指定时,浏览器通过此来判断。

二.

使用流形成一个word文件例子

protected void btnResponseWord_Click(object sender, EventArgs e)
    {
        Response.Clear();       //清空无关信息
        Response.Buffer= true;     //指示是否缓冲输出,为true表示缓冲输出,在Asp.net完成整个执行脚本后再发送
        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”);  // 处理方式disposition:下载指定附件(attachment)

说一下MIME 协议的一个扩展Content-disposition。
我们在开发Web系统时候又是会有以下需求:
  1. 希望某类或者已知MIME类型的文件,如.gif  .doc等能够在访问时 弹出文件下载对话框
  2.  希望以原始文件名(上传时的文件名,例如:山东省政府1024号.doc提供下载,但服务器上保存的地址确实其他文件名如:12345_dsfs.doc)
  3.  希望某文件直接在浏览器显示而不是弹出文件下载对话框

需求的解决办法是:

Response.AddHeader("content-disposition","attachment; filename=fname.txt");

HttpContent.Current.Response.addHeader("Content-Disposition',"attachment; filename=\""+UTF_FileName(filename)+"\";");   
                                                     ------ UTF_FileName() 为了解决包含非英文/数字名称的问题,

 attachment----作为附件下载
 inline          -----在线打开



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值