• 【转】Asp.net中Response.Charset 与Response.ContentEncoding区别


    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。

  • 相关阅读:
    C# 动态创建SQL数据库(一)
    在Winform中菜单动态添加“最近使用文件”
    转(C# 类似右键菜单弹出窗体)
    为什么不能用Abort退出线程
    C# GDI绘制波形图
    转(C# 实现生产者消费者队列)
    为字段设置初始值
    闲话资源管理
    正确使用 new 修饰符
    减少装箱与拆箱
  • 原文地址:https://www.cnblogs.com/SALIN/p/2799912.html
Copyright © 2020-2023  润新知