我希望直接打印像'ø'这样的字符,但在源'ø'中显示为ø
如果输出通过Html.Encode()
,则无法呈现正确的字符,但ø
<globalization
fileEncoding="utf-8"
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="nb-NO"
uiCulture="nb-NO"
/>
来源:
<li><%: Html.ActionLink("Støvletter", "ListProducts", "Tag", new { tag = "Stovletter" }, null)%></li>
输出:
<li><a href="/Tag/Stovletter">Støvletter</a></li>
但输出应该如下:
<li><a href="/Tag/Stovletter">Støvletter</a></li>
答案 0 :(得分:3)
这可能不是您正在寻找的答案,但它仍然很有趣。
如果您查看HttpEncoder
源代码,则会使用custom HtmlEncoders
代替默认WebUtility.HtmlEncode
我玩过,发现Microsoft的HtmlEncoder called AntiXSS正确编码了这些字符。
我使用Nuget安装了它:
PM> Install-Package AntiXSS
然后更新我的web.config
:
<system.web>
<httpRuntime encoderType="Microsoft.Security.Application.AntiXssEncoder,
AntiXssLibrary" />
....
</system.web>
正常输出和Html.ActionLinks似乎都有效。
答案 1 :(得分:1)
AFAIK这是不可能的,除非你推出自己的自定义HTML编码例程(我绝对建议你反对)。
生成的HTML是正确的,并且该字符在客户端浏览器上正确显示。 HTML旨在由程序(Web浏览器)读取,以便将其呈现为人类可读的形式,而不是人类。
<li><a href="/Tag/Stovletter">Støvletter</a></li>
是一个完全有效的HTML,将在客户端浏览器上显示如下:
答案 2 :(得分:1)
您可以尝试使用<%=
而非html编码<%:
(我在对你的评论做出积极评论后发布此信息)