WebView2 ExecuteScriptAsync返回编码HTML,如何获取纯HTML?
WebView2获取HTML出现字符编码的原因及解决方法
原因
ExecuteScriptAsync方法执行JavaScript后,返回的是JSON格式的字符串。当你通过JS获取document.documentElement.outerHTML时,JS引擎会自动将HTML中的特殊字符(比如<、>、双引号)转义成Unicode转义序列(例如\u003C对应<),同时换行符会被转为\n——这么做是为了保证返回的字符串符合JSON语法规范,避免出现语法错误。
解决方法
需要将转义后的JSON字符串还原为原始HTML,以下是两种常用的C#实现方式:
方法1:使用System.Text.Json(.NET Core/.NET 5+推荐)
using System.Text.Json; // 获取转义后的HTML字符串 string encodedHtml = await webView1.ExecuteScriptAsync("document.documentElement.outerHTML"); // 还原为原始HTML string rawHtml = JsonSerializer.Deserialize<string>(encodedHtml);
方法2:使用HttpUtility(需引用System.Web.dll)
using System.Web; // 获取转义后的HTML字符串 string encodedHtml = await webView1.ExecuteScriptAsync("document.documentElement.outerHTML"); // 还原为原始HTML string rawHtml = HttpUtility.JavaScriptStringDecode(encodedHtml);
这两种方法都会自动解析转义序列,将\u003C、\n等转义字符还原为对应的原始HTML字符,最终得到未编码的纯HTML内容。
内容的提问来源于stack exchange,提问作者Extreme_Tough
相关产品推荐
相关产品推荐

