剃刀页面 (blazor) 正在对字符进行编码
razor page (blazor) is encoding the characters
我有一个小网站,当我在网站上执行 Ctrl+U 时,未正确打印 UTF-8 字符.
例如,如果我尝试打印 programación
,它会打印 programación
只有当我打印变量的值时才会发生这种情况,当我对文本进行硬编码时不会发生这种情况。
例如,<div>@variable</div>
打印带有 programació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
.
我有一个小网站,当我在网站上执行 Ctrl+U 时,未正确打印 UTF-8 字符.
例如,如果我尝试打印 programación
,它会打印 programación
只有当我打印变量的值时才会发生这种情况,当我对文本进行硬编码时不会发生这种情况。
例如,<div>@variable</div>
打印带有 programación
编码值的内容。但是值本身,使用检查器是 programación
.
但是如果我在下一行中写 <div>programación</div>
它会正确打印。
我尝试使用 httputlity.htmldecode 但我得到了相同的结果。
我也尝试了 meta charset=UTF-8
并将 .razor
文件保存为 UTF。就像在
有什么方法可以正确打印这些字符吗?
如果重要的话,我正在使用 .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
.