如何:为 ASP.NET 网页全球化选择编码

更新:2007 年 11 月

在内部,ASP.NET 网页后面的代码将所有字符串数据作为 Unicode 处理。您可以设置该页对其响应进行编码的方式,这会相应地设置 HTTP 标头的 Content-Type 部分上的 CharSet 属性。这使得浏览器能够在没有元标记的情况下,或者在不必从内容推导正确编码的情况下,就可以确定该编码。此外,还可以设置页面解释用请求发送的信息的方式。

最后,可以设置 ASP.NET 解释页自身内容(换句话说,就是磁盘上的物理文件 .aspx 的编码)的方式。如果设置了文件编码,则所有 ASP 页都必须使用该编码。Notepad.exe 可以保存当前系统 ANSI 代码页中用 UTF-8 或 UTF-16(也称为 Unicode)编码的文件。ASP.NET 运行库可以对这三种编码加以区分。ASP.NET 物理文件的编码必须与该文件的 @ Page 编码属性中指定的编码相匹配。

39d1w2xf.alert_note(zh-cn,VS.90).gif说明:

有些设计器(如 Visual Studio 2005)可以保存使用不同编码的 .aspx 文件。

39d1w2xf.alert_caution(zh-cn,VS.90).gif警告:

如果 Web 应用程序的名称使用了不是用户操作系统语言的双字节字符集 (DBCS),则该名称可能无法正确显示在该用户的计算机上。在 Microsoft FrontPage 服务器扩展的早期版本和 Microsoft Internet 信息服务 (IIS) 5.1 版和更早版本上,项目名称还必须与 Web 服务器的操作系统语言相匹配才能够正确显示。

指定编码

  • 若要为所有页设置编码,请将 Globalization 属性 (Property) 添加到 Web.config 文件,然后设置它的 fileEncoding、requestEncoding 和 responseEncoding 属性 (Attribute),如下面的示例所示:

    <configuration>
      <system.web>
        <globalization
          fileEncoding="utf-8"requestEncoding="utf-8"responseEncoding="utf-8"
          culture="en-US"
          uiCulture="de-DE"
        />
      </system.web>
    </configuration>
    
  • 若要为个别页设置编码,请设置 @ Page 指令的 RequestEncoding 和 ResponseEncoding 属性,如下面的示例所示:

    <%@ Page RequestEncoding="utf-8" ResponseEncoding="utf-8" %>
    
    39d1w2xf.alert_note(zh-cn,VS.90).gif说明:

    不能设置 fileEncoding 属性,因为该属性应用于文件本身。

请参见

其他资源

ASP.NET 全球化和本地化