我正在使用 ASP.NET Core 8.0 MVC 构建一个应用程序。
在此处显示的代码中,在我看来,法语重音字符显示得不好(参见第一个屏幕截图):
@model List<ViewListTable>
<head>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
<script type="text/javascript">
function f() {
var myArray = [];
@foreach (var d in Model)
{
@:myArray.push("@d.Name");
@:console.log("@d.Name");
}
var cptData = myArray.length;
var tableau = document.getElementById('tableau');
var tbl = document.createElement("table");
var x = 0;
for (var i = 0; i < cptData / 3; i++) {
var tr = document.createElement('tr');
for (j = 0; j < 3; j++) {
var td = document.createElement('td');
if (x < cptData) {
var a = document.createElement('a');
var el_span = document.createElement('span');
var linkText = document.createTextNode(myArray[x]);
var tab = myArray[x];
el_span.setAttribute('style', 'color: #07C');
a.setAttribute('href', "'" + tab + "'");
a.setAttribute('class', 'button');
a.title = "Éditer les données de la table:";
a.appendChild(linkText);
el_span.appendChild(a);
td.appendChild(el_span);
};
x += 1;
tr.appendChild(td)
};
tbl.appendChild(tr);
}
tableau.appendChild(tbl);
}
</script>
</head>
<body>
<div id="tableau"></div>
<script>
f();
</script>
</body>
但是标记元字符集 =“utf-8”是在我的 _layout 文件中设置的。我已经在同一个文件中测试了第二个代码,相反,它在同一个文件中工作正常(参见第二个屏幕截图):
@model List<ViewListTable>
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
</head>
<body>
<div class="container">
<div class="col-6">
Liste des tables
</div>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th class="col-6">
Nom des tables de la BD
</th>
</tr>
</thead>
<tbody>
@foreach (var obj in Model)
{
<tr>
<td>@obj.Name</td>
</tr>
}
</tbody>
</table>
</div>
</body>
</html>
在 JavaScript 代码中插入法语重音字符时,正确处理引号和其他特殊字符非常重要,需要对它们进行转义以确保字符串的正确性和安全性。
所以,我通过更改此代码完成了转义过程
@:myArray.push("@d.Name");
@:console.log("@d.Name");
到
@:myArray.push("@Html.Raw(d.Name.Replace("\"", "\\\"").Replace("'", "\\'"))");
@:console.log("@Html.Raw(d.Name.Replace("\"", "\\\"").Replace("'", "\\'"))");
然后就成功了,测试结果变成了:
到