HttpUtility HtmlDecode。我为什么需要这个?

时间:2017-01-17 14:36:46

标签: c# asp.net-mvc html5 razor

我有一个ASP.NET MVC控制器,它返回一个视图。 在这个视图中我创建了一些HTML。 例如

@Html.ActionLink(HttpUtility.HtmlDecode("¿Olvidó su contraseña?"), "ForgotYourPassword", "Account", null, new { style = "color: white; text-decoration: none;"})

问题是,这个应用程序需要处理一些特殊字符,例如ñ。

上面的代码工作正常,html呈现没有问题。 但问题是我不明白我为什么要使用:

HttpUtility.HtmlDecode("¿Olvidó su contraseña?")

此行只会返回“¿Ólvidosucontrseña?”,但如果不使用HtmlDecode,我只需使用:

@Html.ActionLink("¿Ólvido su contraseña?", "ForgotYourPassword", "Account", null, new { style = "color: white; text-decoration: none;"})

浏览器无法正确显示HTML,并且会出现字符编码问题。

为什么我不能简单地使用“¿Ólvidosucontrseña?” ?。毕竟HttpUtility.HtmlDecode("¿Olvidó su contraseña?") 返回“¿Ólvidosucontraseña?”

2 个答案:

答案 0 :(得分:1)

生成的页面(可能是UTF-8)的编码与源代码的编码不同。

您需要比较生成的HTML中的<meta charset="...">标记和源代码的编码(here is a simple way to find it out)。

如果它们不同,最简单的解决方案是使用与网页相同的编码保存源代码。

如果问题仍然存在,请尝试将其添加到Web.config

<system.web>
    <globalization fileEncoding="utf-8" />
</system.web>

答案 1 :(得分:0)

如果您只使用静态内容没有区别,但是如果您需要从数据库或文件中检索文本,那么显示具有正确编码的字符将非常有用。