【转】Asp.net中Response.Charset 与Response.ContentEncoding区别
2012-12-03 16:55
211 查看
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("千一网络");
然后用浏览器打开网页,可以发现是乱码,可是用记事本查看源文件,又发现不是乱码。这就说明了: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。
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("千一网络");
然后用浏览器打开网页,可以发现是乱码,可是用记事本查看源文件,又发现不是乱码。这就说明了: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。
相关文章推荐
- Asp.net中Response.Charset 与Response.ContentEncoding区别
- Asp.net中Response.Charset 与Response.ContentEncoding区别
- Asp.net中Response.Charset 与Response.ContentEncoding区别
- Asp.net中Response.Charset 与Response.ContentEncoding区别
- Asp.net中Response.Charset与Response.ContentEncoding区别示例分析
- Asp.net中Response.Charset与Response.ContentEncoding区别示例分析
- asp.net使用response.redirect后无法弹出对话框解决办法
- asp.net response.ContentType 下载文件的四种方法
- ASP.NET:UpdatePanel与Response.Write()不兼容解决方法
- asp.net response输出下载文件的问题
- asp.net response.ContentType 下载文件的四种方法
- asp.net报出“非静态字段、方法或属性’System.Web.UI.Page.Response.get‘要求对象引用”错误
- asp.net response写文件
- 使用 Asp.Net Response.Write() 制作实时进度条
- asp.net网页间传值方式之Response.Redirect和Server.Transfer
- asp.net 页面转向 Response.Redirect, Server.Transfer, Server.Execute的区别
- asp.net中Response.Redirect方法在新窗口中弹出方法
- ASP .NET调用javascript中Response.Write和ClientScript.RegisterStartupScript的区别(2)
- asp.net response.ContentType 下载文件的四种方法
- 剖析ASP.NET WebAPI 转化 ActionResult 为 HttpResponse的机制