视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Asp.net中Response.Charset与Response.ContentEncoding区别示例分析
2020-11-27 22:38:51 责编:小采
文档


本文以示例形式分析了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程序设计有所帮助。

下载本文
显示全文
专题