Asp.net
為什麼 ASP.NET Core 在視圖中將波斯語(或阿拉伯語)文本轉換為字元引用 (&#xhhhh;)
原始碼:
@{ ViewBag.Title = "سلام علیک"; } <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>@ViewBag.Title</title> </head> <body> <div class="container" dir="rtl"> @RenderBody() </div> </body> </html>它在瀏覽器中呈現得很好,但我想要 html 原始碼中的相同文本(對於某些搜尋引擎優化器軟體)
和輸出:
<!DOCTYPE html> <html> <head> <title>سلام علیک</title> </head> <body> ... </body> </html>
因為,預設情況下,HTML 編碼引擎只會將基本的拉丁字母列入安全列表(因為瀏覽器有錯誤。所以我們試圖防止未知問題)。您看到的 &XXX 值仍然像您在螢幕截圖中看到的一樣正確呈現,因此除了增加的頁面大小之外沒有真正的危害。
如果增加的頁面大小困擾您,那麼您可以自定義編碼器以安全列出您自己的字元頁面(不是語言,Unicode 不考慮語言)
要加寬被編碼器視為安全的字元,您可以在 startup.cs 的 ConfigureServices() 方法中插入以下行;
services.AddSingleton<HtmlEncoder>( HtmlEncoder.Create(allowedRanges: new[] { UnicodeRanges.BasicLatin, UnicodeRanges.Arabic }));阿拉伯語在 Unicode 中有很多塊,因此您可能需要添加更多塊才能獲得所需的全部範圍。
