.Net Core中System.Web.HttpUtility.HtmlDecode遇&符号失效求助
解决.NET Core中HtmlDecode未按预期工作的问题
嘿,这个问题我之前也碰到过!在.NET Core里用System.Web.HttpUtility.HtmlDecode确实容易踩坑,因为这个类是从传统ASP.NET Framework继承过来的,在跨平台环境下的实现并不完善,导致没法正确解码HTML实体。
直接换用System.Net.WebUtility.HtmlDecode就搞定了
.NET Core(包括.NET 5及以后版本)官方推荐用System.Net.WebUtility中的解码方法,它是专门为跨平台场景设计的,处理HTML编码/解码更可靠,而且不需要额外安装任何NuGet包。
把你的代码改成这样就行:
string x = "&Microsoft<?xml version="; string y = System.Net.WebUtility.HtmlDecode(x); Console.WriteLine(y); // 会输出你想要的:&Microsoft<?xml version= Console.ReadLine();
为啥原来的方法不行?
简单来说,.NET Core重构了很多ASP.NET Framework的组件,System.Web命名空间下的很多工具类(包括HttpUtility)都不再是核心推荐的方案,它们的实现被简化甚至有功能缺失。而WebUtility属于.NET基础类库的一部分,对HTML实体的解析逻辑更标准,能准确把<转换成<,同时保留原本不是HTML实体的&符号——完全匹配你期望的结果。
内容的提问来源于stack exchange,提问作者Saravanapandian
相关产品推荐
相关产品推荐

