razor page (blazor) 正在对字符进行编码
Posted
技术标签:
【中文标题】razor page (blazor) 正在对字符进行编码【英文标题】:razor page (blazor) is encoding the characters 【发布时间】:2021-10-16 23:15:49 【问题描述】:我有一个小网站,当我在网站上执行 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。就像在this post 中指定的一样,但这些都不起作用。
有什么方法可以正确打印这些字符吗?
如果这很重要,我正在使用 .NET5。
【问题讨论】:
哪个浏览器? (没有复制)。 我在 Firefox、Chrome 和 Edge 中尝试过。 【参考方案1】:默认情况下,Razor 会编码所有非 ASCII 字符,即Basic Latin range 之外的字符。如果您希望其他范围不受影响,则需要对其进行配置。您可以在 ConfigureServices
方法中通过指定 Razor 应该不编码的范围来执行此操作。您遇到问题的字符在 Latin-1 Supplement 范围内,因此您包括:
services.Configure<WebEncoderOptions>(options =>
options.TextEncoderSettings = new TextEncoderSettings(
UnicodeRanges.BasicLatin,
UnicodeRanges.Latin1Supplement);
);
请注意,您在此处设置的任何内容都将覆盖默认设置,这就是为什么您还需要包含UnicodeRanges.BasicLatin
范围的原因。如果您不确定应该包含哪些字符集,可以在此处查看:http://www.unicode.org/charts/。或者,您可以简单地指定UnicodeRanges.All
。
【讨论】:
以上是关于razor page (blazor) 正在对字符进行编码的主要内容,如果未能解决你的问题,请参考以下文章
如何在同一 Blazor 页面上的 Razor 组件之间传递数据?
如何将可操作的控制字符从 JSON 文本元素传递到 razor 组件 Blazor 变量
Blazor DI 在 .razor 和商务类中的工作方式不同。为啥?