Ñ 字符在 HTML SELECT 中错误地显示为 Ñ
Ñ character displaying incorrectly as Ñ in HTML SELECT
我有一个 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),并且会向 select 显示包含该字符串的项目。包含 Ñ 字符的即时显示的项目可以正确显示。问题是一旦保存了值并重新加载了页面。 Ñ 字符在 html select 对象中显示不正确。它只发生在 select 对象中。在所有其他对象中 Ñ 字符正确显示。
我在页面的头部部分指出了以下语句:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8" />
此外,cshtml 视图被保存为 UTF-8。我已经按照以下步骤使用 Notepad++ 检查了它: 在记事本中打开文件。单击 'Save As...'。在 'Encoding:' 组合框中,我看到当前文件格式为 UTF-8。
那我做错了什么?
已更新:
我已经通过互联网浏览器(chrome、firefox 等)调试并检查了生成的源代码,我可以看到问题是使用 [=59= 设置 de html select 值时] 如下:
$('#street').val('@Model.street');
上面一行被互联网浏览器解释为:
$('#street').val('PEÑALBES');
所以在html select对象中显示为:
PEÑALBES
而不是 PEÑALBES。
最后我通过应用下面 javascript 找到的函数解决了这个问题 here:
function decodeHtml(html) {
var txt = document.createElement("textarea");
txt.innerHTML = html;
return txt.value;
}
$('#street').val(decodeHtml('@Model.street'));
而不是以下:
$('#street').val('@Model.street');
其他有趣的帖子如下:
- HTML Entity Decode
- How to decode HTML entities using jQuery?
我有一个 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),并且会向 select 显示包含该字符串的项目。包含 Ñ 字符的即时显示的项目可以正确显示。问题是一旦保存了值并重新加载了页面。 Ñ 字符在 html select 对象中显示不正确。它只发生在 select 对象中。在所有其他对象中 Ñ 字符正确显示。
我在页面的头部部分指出了以下语句:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8" />
此外,cshtml 视图被保存为 UTF-8。我已经按照以下步骤使用 Notepad++ 检查了它: 在记事本中打开文件。单击 'Save As...'。在 'Encoding:' 组合框中,我看到当前文件格式为 UTF-8。
那我做错了什么?
已更新: 我已经通过互联网浏览器(chrome、firefox 等)调试并检查了生成的源代码,我可以看到问题是使用 [=59= 设置 de html select 值时] 如下:
$('#street').val('@Model.street');
上面一行被互联网浏览器解释为:
$('#street').val('PEÑALBES');
所以在html select对象中显示为:
PEÑALBES
而不是 PEÑALBES。
最后我通过应用下面 javascript 找到的函数解决了这个问题 here:
function decodeHtml(html) {
var txt = document.createElement("textarea");
txt.innerHTML = html;
return txt.value;
}
$('#street').val(decodeHtml('@Model.street'));
而不是以下:
$('#street').val('@Model.street');
其他有趣的帖子如下:
- HTML Entity Decode
- How to decode HTML entities using jQuery?