Asp.net中Response.Charset与Response.ContentEncoding区别示例分析

 更新时间:2014年08月25日 17:11:18   转载 投稿:shichen2014  
这篇文章主要介绍了Asp.net中Response.Charset与Response.ContentEncoding区别示例分析,对于深入理解Asp.net程序设计有一定的帮助,需要的朋友可以参考下

本文以示例形式分析了Asp.net中Response.Charset与Response.ContentEncoding的区别,分享给大家供大家参考。具体如下:

1.Response.Charset 
ASP.NET 中示例:

<%@ Page CodePage=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 做成树状显示。

<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; //完成整个响应后再发送
    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>元素:

<META HTTP-EQUIV="REFRESH", "60;URL=newpath/newpage.asp"

@页面转向

Response.Status = "302 Object Moved"
Response.Addheader "Location", "newpath/newpage.asp"

这等同于使用Response.Redirect方法:

Response.Redirect "newpath/newpage.asp"

@强制浏览器显示一个用户名/口令对话框

Response.Status= "401 Unauthorized"
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程序设计有所帮助。

相关文章

  • asp.net中调用存储过程的方法

    asp.net中调用存储过程的方法

    这篇文章主要介绍了asp.net中调用存储过程的方法,结合实例形式分析了存储过程的建立与asp.net调用存储过程的相关技巧,需要的朋友可以参考下
    2016-05-05
  • Log4net日志记录组件的使用步骤详解和下载

    Log4net日志记录组件的使用步骤详解和下载

    Log4net日志记录组件的使用步骤详解,需要的朋友可以参考一下
    2013-02-02
  • 在vs2008中使用AJAX开发.net 2.0下的Web程序的方法

    在vs2008中使用AJAX开发.net 2.0下的Web程序的方法

    最近做项目需要用到AJAX,但是工作需要必须使用.net 2.0版本;但发现如果项目为.net2.0版本则没有Ajax(web.config已经配置上ajax) ,、工具栏中并不出现Ajax选项卡. 而且新建页面也没有AJAX页面;后来查了很多资料 发现了一种解决方法
    2011-06-06
  • asp.net Repeater之非常好的数据分页

    asp.net Repeater之非常好的数据分页

    asp.net Repeater之非常好的数据分页实现代码。
    2009-07-07
  • FileUpload使用Javascript检查扩展名是否有效实现思路

    FileUpload使用Javascript检查扩展名是否有效实现思路

    在JavaScript获取FileUpload控件的文件路径,并取得路径中的文件扩展名,再与阵列中的扩展名比较,如果存在,说明上传的文件是有效的,反之无效,感兴趣的朋友可以了解下,或许对你有所帮助
    2013-02-02
  • ASP.NET Core中自定义路由约束的实现

    ASP.NET Core中自定义路由约束的实现

    这篇文章主要介绍了ASP.NET Core中自定义路由约束的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • asp.net mvc发送邮件实例讲解

    asp.net mvc发送邮件实例讲解

    这篇文章主要为大家详细介绍了asp.net mvc发送邮件实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • 解析ABP框架中的事务处理和工作单元

    解析ABP框架中的事务处理和工作单元

    ABP是"ASP.NET Boilerplate Project(ASP.NET样板项目)"的简称,是一个建立在.NET之上的Web开发框架,下面我们来解析ABP框架中的事务处理和工作单元
    2016-06-06
  • asp.net 临时数据保存实现代码

    asp.net 临时数据保存实现代码

    在一个程序运行的时候往往我们会回到上一个页面,或者我们会需要当时留在这个页面的临时数据,例如,我们用百度搜索“脚本”之后我们会看到很多那啥我就不再说了啊!然后我们返回本来页面在文本框内会有“脚本”的字样,我们一下代码段就是实现这个功能
    2012-04-04
  • 详解.NET Core 使用HttpClient SSL请求出错的解决办法

    详解.NET Core 使用HttpClient SSL请求出错的解决办法

    这篇文章主要介绍了.NET Core 使用HttpClient SSL请求出错的解决办法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03

最新评论