尝试制作我的第一个 ASP.NET 页面。在 XP 上安装了 IIS 5.1,配置为运行 .NET 4。创建了一个新的虚拟目录并添加了一个 .aspx 文件。当我浏览该文件时,非 ASCII 字符已损坏。例如,ü (U+00FC) 会转换为 ü (U+00C3 U+00BC),这相当于 I-dont-get-this-is-UTF-8。
我尝试了多种方法来利用这一点:
- 我确保 .aspx 文件确实编码为 UTF-8。
-
我设置了元标记:
<meta charset="UTF-8">
我将虚拟目录设置为处理 .aspxtext/html;charset=utf-8
在 IIS 中的 HTTP 标头 > 文件类型下。
- I added
ResponseEncoding="utf-8"
to <%@ 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>
Without fileEncoding
设置后,ASP.NET 解析器将读取 .aspx 并损坏每个非 ASCII 字符,而不尝试推断文件编码。这只是你们职业选手已经学会忍受的事情,还是我错过了什么?是具有全球化设置的 web.config 文件the处理 .aspx 页面上的“国际”字符的方法?我不记得 PHP 遇到过类似的问题,所以我很困惑为什么 ASP.NET 会出现这种问题。
要使用非 ASCII 字符,您需要具备两件事。使用 UTF-8 保存文件,为文件选择此编码,并确保您的计算机上有这些设置网络配置
<globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8" />
请注意,ASP.NET 上始终有一个 web.config。全局设置也具有这些设置并位于 asp.net 目录中{drive:}\WINDOWS\Microsoft.NET\Framework\{version}\CONFIG\
,然后是项目中的 web.config。有时,全局设置来自当前国家/地区的编码。在这种情况下,您需要在项目中将其设置回 UTF-8。
你已经找到了所有这些,我只指出 3 个设置:
- 使用 unicode 保存文件。
- 设置请求编码=“utf-8”
- 设置响应编码=“utf-8”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)