ASP.NET Core Web应用程序Razor视图HTML源码中文(非英文)被转码的解决方案

ASP.NET Core 作者: Rector 41 阅读 0 评论 0 收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

如题,如果你是刚接触ASP.NET Core Web应用程序的开发者,当把ASP.NET Core Web应用程序写好,并在浏览器中查看页面,非英文字符显示一切正常,但当你打开HTML源代码查看时,所有的非英文字符则是被编码了,显示为类似&#XXXX;这样的字符编码串,如:

@{
    Layout = null;
    ViewData["Title"] = "Hello,这里是网页标题";
}
<title>@ViewData["Title"]</title>

HTML源码输出结果是:

<title>Hello,&#x8FD9;&#x91CC;&#x662F;&#x7F51;&#x9875;&#x6807;&#x9898;</title>

造成这个问题的原因是ASP.NET Core Web应用程序在处理HTML编码的时候默认使用了UnicodeRanges.BasicLatin字符编码,非英文的字符均将被转码,所以中文字符在HTML的源码中就变成了上面的结果。浏览器是显示是正常的中文字符,是因为浏览器自动为我们进行了字符解码。

既然找到了问题的原因,那么在ASP.NET Core Web应用程序中如何处理这种非英文字符被编码的问题呢?

本文为ASP.NET Core Web应用程序开发者提供以下几个解决方案:

services.AddSingleton(HtmlEncoder.Create(UnicodeRanges.All));

或者

services.Configure<WebEncoderOptions>(options =>
{
    options.TextEncoderSettings = new TextEncoderSettings(UnicodeRanges.All);
});

或者(推荐)

services.Configure<WebEncoderOptions>(options =>
    options.TextEncoderSettings = new TextEncoderSettings(UnicodeRanges.BasicLatin,
        UnicodeRanges.CjkUnifiedIdeographs));

阅读了该文章的人还浏览了...

本文永久链接码友网 » ASP.NET Core Web应用程序Razor视图HTML源码中文(非英文)被转码的解决方案

发布于: 2019-02-20 11:17:03
分享扩散: