小编kne*_*wit的帖子

C# WebClient - DownloadString 编码错误

我正在尝试从 Amazon 下载 html 文档,但由于某种原因,我得到了一个错误的编码字符串,例如“??K??g??g?e”。

这是我试过的代码:

using (var webClient = new System.Net.WebClient())
{
    var url = "https://www.amazon.com/dp/B07H256MBK/";
    webClient.Encoding = Encoding.UTF8;
    var result = webClient.DownloadString(url);
}
Run Code Online (Sandbox Code Playgroud)

使用 HttpClient 时也会发生同样的事情:

var url = "https://www.amazon.com/dp/B07H256MBK/";
var httpclient = new HttpClient();
var html = await httpclient.GetStringAsync(url);
Run Code Online (Sandbox Code Playgroud)

我还尝试以字节读取结果,然后将其转换回 UTF-8,但我仍然得到相同的结果。另请注意,这并不总是发生。例如,昨天我运行这段代码大约 2 个小时,我得到了一个正确编码的 HTML 文档。但是今天我总是得到一个糟糕的编码结果。它每隔一天发生一次,所以它不是一次性的。

================================================== ================

但是,当我使用 HtmlAgilitypack 的包装器时,它每次都按预期工作:

var url = "https://www.amazon.com/dp/B07H256MBK/";
HtmlWeb htmlWeb = new HtmlWeb();
HtmlDocument doc = htmlWeb.Load(url);
Run Code Online (Sandbox Code Playgroud)

即使我明确定义了正确的编码,是什么导致 WebClient 和 HttpClient 得到错误的编码字符串?默认情况下,HtmlAgilityPack 的包装器是如何工作的?

谢谢你的帮助!

.net c# asp.net webrequest webclient-download

2
推荐指数
1
解决办法
580
查看次数

标签 统计

.net ×1

asp.net ×1

c# ×1

webclient-download ×1

webrequest ×1