本文以示例形式分析了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中readonly与const的区别详解,包括了ASP.NET中readonly与const的区别详解的使用技巧和注意事项,需要的朋友参考一下 const是一个修饰常量的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性,它在程序设计中有着非常重要的作用,给开发人员带来非常方便的应用。 下面我们来建一个控制台应用程序作测试: 以前
本文向大家介绍ASP.NET中Literal与Label控件的区别,包括了ASP.NET中Literal与Label控件的区别的使用技巧和注意事项,需要的朋友参考一下 一、方案和背景 Literal 控件表示用于向页面添加内容的几个选项之一。对于静态内容,无需使用容器,可以将标记作为 HTML 直接添加到页面中。但是,如果要动态添加内容,则必须将内容添加到容器中。典型的容器有 Label 控件、L
本文向大家介绍C#中类与结构的区别实例分析,包括了C#中类与结构的区别实例分析的使用技巧和注意事项,需要的朋友参考一下 类与结构是C#程序设计中基本的数据类型,而初学者往往不能很好的分清二者之间的区别。本文就以附带实例形式加以说明。具体如下: 一、基本概念: 类:引用类型,存储在堆中,栈中存储引用地址,在方法的传输中只是传输地址的引用,修改指向的对象会影响原有对象的值,传输中消耗内存小。 结构:值
本文向大家介绍DataSet与DataTable的区别示例介绍,包括了DataSet与DataTable的区别示例介绍的使用技巧和注意事项,需要的朋友参考一下 DataSet:数据集。一般包含多个DataTable,用的时候,dataset["表名"]得到DataTable DataTable:数据表。 一: SqlDataAdapter da=new SqlDataAdapter(cmd); D
本文向大家介绍$("").click与onclick的区别示例介绍,包括了$("").click与onclick的区别示例介绍的使用技巧和注意事项,需要的朋友参考一下 Html代码 区别: 1.onclick是绑定事件,告诉浏览器在鼠标点击时候要做什么 click本身是方法作用是触发onclick事件,只要执行了元素的click()方法,就会触发onclick事件。如上诉代码所示,当点击'ee'按
本文向大家介绍实例分析java中重载与重写的区别,包括了实例分析java中重载与重写的区别的使用技巧和注意事项,需要的朋友参考一下 本文以实例详细分析了Java中重载与重写的区别,感兴趣的朋友可以参考一下。 一、重载(Overloading): (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。 重载Overloading是一个类中多态性