C# 使用HtmlAgilityPack获取InnerText出现HTML实体编码错误如何修复
HtmlAgilityPack HTML实体编码问题修复方案
问题根源
你遇到的不是字节编码匹配错误,而是获取到的文本包含HTML实体转义字符(类似ý、 这类都是HTML规范里的转义表示),你尝试在不同字符编码之间转换字节流的操作无法处理这类转义内容,所以没有效果。
修复方法
直接使用.NET内置的HTML实体解码工具处理获取到的文本即可,不需要操作字节流。
推荐使用System.Net.WebUtility.HtmlDecode方法,无需额外引用System.Web类库,兼容性更强。
修改后代码
HtmlWeb Webget = new HtmlWeb(); var docx = await Webget.LoadFromWebAsync(@"https://isubtitles.org/search?kwd=parasite"); var items = docx.DocumentNode.SelectNodes("//div[@class='movie-list-info']"); foreach (var node in items) { var name = node?.SelectSingleNode(".//div/div[2]/h3/a"); var xxxx = name?.InnerText; // 替换原有字节转换逻辑,直接解码HTML实体 var myString = System.Net.WebUtility.HtmlDecode(xxxx); Debug.WriteLine(myString); return; }
验证效果
对转义字符串Ký Sinh Trùng - (2019)执行解码后,输出结果就是你需要的Ký Sinh Trùng - (2019)。
内容的提问来源于stack exchange,提问作者user16474396
相关产品推荐
相关产品推荐

