剃刀页面 (blazor) 正在对字符进行编码

razor page (blazor) is encoding the characters

我有一个小网站,当我在网站上执行 Ctrl+U 时,未正确打印 UTF-8 字符.

例如,如果我尝试打印 programación,它会打印 programación

只有当我打印变量的值时才会发生这种情况,当我对文本进行硬编码时不会发生这种情况。

例如,<div>@variable</div> 打印带有 programaci&#xF3;n 编码值的内容。但是值本身,使用检查器是 programación.

但是如果我在下一行中写 <div>programación</div> 它会正确打印。

我尝试使用 httputlity.htmldecode 但我得到了相同的结果。

我也尝试了 meta charset=UTF-8 并将 .razor 文件保存为 UTF。就像在 中指定的那样,但其中 none 有效。

有什么方法可以正确打印这些字符吗?

如果重要的话,我正在使用 .NET5。

默认情况下,Razor 对所有非 ASCII 字符进行编码,即 Basic Latin range 之外的字符。如果您希望其他范围保持不变,则需要对其进行配置。您可以在 ConfigureServices 方法中通过指定 Razor 应该 而不是 编码的范围来执行此操作。您遇到问题的字符在 Latin-1 补充范围内,因此您包括:

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

请注意,无论您在此处设置什么,都会 覆盖 默认设置,这就是为什么您还需要包括 UnicodeRanges.BasicLatin 范围的原因。如果您不确定应该包含哪些字符集,可以在此处查看:http://www.unicode.org/charts/。或者,您可以简单地指定 UnicodeRanges.All.