gpt4 book ai didi

asp.net - 非 ASCII 字符需要 web.config 吗?

转载 作者:行者123 更新时间:2023-12-02 16:43:37 26 4
gpt4 key购买 nike

尝试制作我的第一个 ASP.NET 页面。在 XP 上安装了 IIS 5.1,配置为运行 .NET 4。创建了一个新的虚拟目录并添加了一个 .aspx 文件。当我浏览该文件时,非 ASCII 字符已损坏。例如,ü (U+00FC) 会转换为 ü (U+00C3 U+00BC),这相当于 I-dont-get-this-is-UTF-8。

我尝试了各种方法来利用它:

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

    <meta charset="UTF-8">

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

  4. 我添加了ResponseEncoding="utf-8"<%@ Page ... %> .
  5. 我将字符串插入 HttpUtility.HtmlEncoded() 。现在 ü 转换为 ü (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>

没有fileEncoding设置后,ASP.NET 解析器将读取 .aspx 并损坏每个非 ASCII 字符,而不尝试推断文件编码。这只是你们职业选手已经学会忍受的事情,还是我错过了什么?具有全局化设置的 web.config 文件是处理 .aspx 页面上的“国际”字符的方法吗?我不记得 PHP 遇到过类似的问题,所以我很困惑为什么 ASP.NET 会出现这种问题。

最佳答案

要使用非 ASCII 字符,您需要做两件事。使用 UTF-8 保存文件,为文件选择此编码,并确保您的 web.config

上有这些设置
<globalization requestEncoding="utf-8" responseEncoding="utf-8"  fileEncoding="utf-8" />

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

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

  1. 使用 unicode 保存文件。
  2. 设置 requestEncoding="utf-8"
  3. 设置responseEncoding="utf-8"

关于asp.net - 非 ASCII 字符需要 web.config 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10572314/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com