Ñ字符在HTML SELECT中错误地显示为Ñ

问题描述 投票:0回答:1

我有一个ASP.NET MVC应用程序。在一种形式中,我对字符Ñ的编码有疑问。如下图所示:

Ñ 

此表单具有多个对象,例如TextBoxFor和select等。最初在首次加载页面时,所有HTML对象(TextBoxFor,Select等)中的字符都正确显示。填写完所有字段后,单击“保存”按钮以将值保存到数据库中。然后重新加载页面,并保留所有字段的填充(它们不会清除)。

一旦重新加载页面,Ñ字符将显示为:

Ñ 

在下面的html Select对象中:

<select class="form-control" id="street" name="street"></select>

但是在其他对象中,例如TextBoxFor正确显示为Ñ:

@Html.TextBoxFor(model => model.DepartmentName, new { @class = "input-xmediumlarge" }, (bool)( !ViewBag.ReadOnly), true)

Html Select对象从查询填充到数据库。当用户在其中键入字符时,将立即进行搜索(使用JQuery),并显示包含该字符串的项目以供选择。即时显示包含Ñ字符的项目。问题是一旦保存值并重新加载页面。 Ñ字符在html选择对象中显示不正确。它仅在选择对象中发生。在所有其他对象中,Ñ字符正确显示。

我已经在页面的顶部注明了以下声明:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8" />

此外,cshtml视图另存为UTF-8。我已经通过执行以下步骤使用Notepad ++进行了检查:在记事本中打开文件。点击“另存为...”。在“编码:”组合框中,我看到了当前文件格式UTF-8。

所以我在做什么错呢?

UPDATED:我已经通过Internet浏览器(chrome,firefox等)调试和检查了生成的源代码,我看到的问题是使用jquery设置de html select值时,如下所示:

$('#street').val('@Model.street');

以上行由互联网浏览器解释如下:

$('#street').val('PE&#209;ALBES');

因此在html select对象中显示为:

PE&#209;ALBES

代替PEÑALBES。

asp.net-mvc encoding character-encoding html-select
1个回答
0
投票

最后,我已经通过应用下面的here找到的javascript函数解决了它:

function decodeHtml(html) {
    var txt = document.createElement("textarea");
    txt.innerHTML = html;
    return txt.value;
}

$('#street')。val(decodeHtml('@ Model.street'));

而不是下面的:

$('#street')。val('@ Model.street');

下面有其他有趣的帖子在谈论:

© www.soinside.com 2019 - 2024. All rights reserved.