首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Html.Encode对Html.Raw

Html.Encode对Html.Raw
EN

Stack Overflow用户
提问于 2022-11-29 09:52:21
回答 1查看 28关注 0票数 0

在.NET框架中,HTMLEncode会在视图文件中对特殊字符(如匈牙利字母、中文字母)进行编码并正确显示,而在.NET 6中,HTMLEncode会将它们显示为á

我正在使用UTF-8编码,所有文件都被正确地设置为它。我查看了微软的文档,我看到这些类来自不同的Assembly。我是不是漏掉了什么?

我的目标是显示没有特殊字符。我知道HtmlRaw,但是这是安全的,也是最好的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-29 15:10:03

默认情况下,非拉丁字符是由ASP.NET核心中的Razor编码的.当您自己在它们上使用HTMLEncode时,您基本上是对它们进行双重编码,以便它们呈现为它们的编码版本。

简而言之,没有必要在HTMLEncode核心中使用非拉丁字符,因为框架为您提供了该框架。但是,您可能会决定不喜欢HTML源代码中这些字符的HTML等价物,在这种情况下,您可以配置编码器选项,以防止默认编码器做他们所做的事情,并让浏览器的UTF-8支持来处理这些事情:

代码语言:javascript
复制
builder.Services.Configure<WebEncoderOptions>(options =>
{
    options.TextEncoderSettings = new TextEncoderSettings(UnicodeRanges.BasicLatin, UnicodeRanges.Latin1Supplement);
});

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74612108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档