带有法语口音的字符在视图中显示垃圾

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

我正在使用 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>

enter image description here

enter image description here

razor asp.net-core-mvc asp.net-core-8
1个回答
0
投票

在 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("'", "\\'"))");

然后就成功了,测试结果变成了:

image1

image2

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