我是否需要web.config用于非ASCII字符?

Gus*_*ren 5 asp.net encoding utf-8

试图创建我的第一个ASP.NET页面.在XP上获得IIS 5.1,配置为运行.NET 4.创建一个新的虚拟目录并添加.aspx文件.浏览文件时,非ASCII字符已损坏.例如,ü(U + 00FC)被转换为Ã(U + 00C3 U + 00BC),这就是I-not-get-this-is-UTF-8等价物.

我尝试了各种方式来利用这个:

  1. 我确保.aspx文件确实编码为UTF-8.
  2. 我设置了元标记:

    <meta charset="UTF-8">

  3. 我将虚拟目录设置为处理text/html;charset=utf-8IIS中的HTTP标头>文件类型下的.aspx .

  4. 我加入ResponseEncoding="utf-8"<%@ Page ... %>.
  5. 我插入了字符串HttpUtility.HtmlEncoded().现在ü被转换为U(U + 00C3 U + 00BC).

最后,我找到了两种方法:

  1. 用字符引用替换非ASCII字符,比如&#252;这在90年代是可以的,而不是今天.
  2. 使用以下内容将web.config文件添加到虚拟目录:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.web>
        <globalization fileEncoding="utf-8"/>
      </system.web>
    </configuration>
    
    Run Code Online (Sandbox Code Playgroud)

如果不进行fileEncoding设置,ASP.NET解析器将读取.aspx并破坏每个非ASCII字符,而不尝试推断文件编码.这只是你们专业人士学到的东西,还是我错过了什么?带有全球化设置 web.config文件是否可以处理.aspx页面上的"国际"字符?我不记得有类似PHP的问题,所以我很困惑为什么这与ASP.NET一起出现.

Ari*_*tos 4

要使用非 ASCII 字符,您需要具备两件事。通过为文件选择此编码,使用 UTF-8 保存文件,并确保您的web.config中有这些设置

<globalization requestEncoding="utf-8" responseEncoding="utf-8"  fileEncoding="utf-8" />
Run Code Online (Sandbox Code Playgroud)

请注意,ASP.NET 上始终有一个 web.config。全局的也有这些设置并位于 asp.net 目录中{drive:}\WINDOWS\Microsoft.NET\Framework\{version}\CONFIG\,然后是项目上的 web.config 。有时,全局设置来自当前国家/地区的编码。在这种情况下,您需要在项目中将其设置回 UTF-8。

你已经找到了所有这些,我只指出 3 个设置:

  1. 使用 unicode 保存文件。
  2. 设置请求编码=“utf-8”
  3. 设置响应编码=“utf-8”