我有一个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?”
答案 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)
如果您只使用静态内容没有区别,但是如果您需要从数据库或文件中检索文本,那么显示具有正确编码的字符将非常有用。