尝试制作我的第一个 ASP.NET 页面。在 XP 上安装了 IIS 5.1,配置为运行 .NET 4。创建了一个新的虚拟目录并添加了一个 .aspx 文件。当我浏览文件时,非 ASCII 字符已损坏。例如,将 ü (U+00FC) 转换为 ü (U+00C3 U+00BC),这是 I-don't-get-this-is-UTF-8 等价物。
我尝试了各种方法来利用它:
- 我确保 .aspx 文件确实被编码为 UTF-8。
我设置了元标记:
<meta charset="UTF-8">
text/html;charset=utf-8
我将虚拟目录设置为在 IIS 中的 HTTP 标头 > 文件类型下处理 .aspx 。- 我添加
ResponseEncoding="utf-8"
到<%@ Page ... %>
. - 我将字符串插入
HttpUtility.HtmlEncoded()
. 现在 ü 被转换为 ü (U+00C3 U+00BC)。
最后,我找到了两种有效的方法:
- 用字符引用替换非 ASCII 字符,例如
ü
这在 90 年代还可以,而不是今天。 将 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 会出现这种问题。