将站点转换为 asp.net 核心后,Razor cshtml 中的单引号字符未被识别为有效字符

Single quotation character in Razor cshtml not recognized as a valid character after converting site to asp.net core

我已经将之前的 asp.net MVC .net 框架网站转换为 .net core 6,但遇到了一个奇怪的问题。

我在 cshtml 的文本中嵌入的单引号,即 `` 在我的运行时输出中显示为带有 unicode 替换字符引号的字符,即 � 在我的运行时输出中

在运行时我的 cshtml 中有 unicode 替换字符,在编辑器中它显示重音字符是正确的。

Example

然而,确切的 cshtml 文件在旧 asp.net 4

中显示正确

这不是 Windows 设置问题,因为旧网站在同一台机器上显示正确 我试过的。

我测试了 various meta headers 到页眉

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<meta http-equiv="Content-Type" content="text/html; charset=UTF-32" />

在我的 Program.cs 中,我尝试添加

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

然后尝试

builder.Services.AddSingleton<HtmlEncoder>(
        HtmlEncoder.Create(allowedRanges: new[] { UnicodeRanges.All 
}));

也试过

<system.web>
   <globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8"/>
 </system.web>

在我的 web.config

但运行时输出仍然与问号字符相同

我发现了问题。在 windows 资源管理器中打开 cshtml 文件位置,然后在记事本中打开该文件。然后另存为,我看到默认编码是ANSI。然后我将文件保存为 UTF-8。

screenshot

让我吃惊的是它在 Visual studio 和记事本中正确显示,但只是在运行时不正确,所以我认为文件编码是 asp.net

中的内容