gpt4 book ai didi

c# - WebClient.DownloadString() 返回带有特殊字符的字符串

转载 作者:IT王子 更新时间:2023-10-29 03:44:17 25 4
gpt4 key购买 nike

我在为我正在构建的屏幕抓取工具从网上下载一些内容时遇到问题。

在下面的代码中,从 Web 客户端下载字符串方法返回的字符串返回一些奇怪的字符用于少数(不是所有)网站的源下载。

我最近添加了 http header ,如下所示。以前在没有 header 的情况下调用相同的代码达到相同的效果。我没有尝试过“Accept-Charset” header 的变体,除了基础知识之外,我对文本编码了解不多。

我指的字符或字符序列是:



当您在网络浏览器中使用“查看源代码”时,看不到这些字符。可能是什么原因造成的,我该如何解决这个问题?

string urlData = String.Empty;
WebClient wc = new WebClient();

// Add headers to impersonate a web browser. Some web sites
// will not respond correctly without these headers
wc.Headers.Add("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12");
wc.Headers.Add("Accept", "*/*");
wc.Headers.Add("Accept-Language", "en-gb,en;q=0.5");
wc.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");

urlData = wc.DownloadString(uri);

最佳答案

 是八位字节 EF BB BF 的 windows-1252 表示。那是 the UTF-8 byte-order marker ,这意味着您的远程网页是用 UTF-8 编码的,但您正在阅读它,就好像它是 windows-1252 一样。 According to the docs , WebClient.DownloadString 使用 Webclient.Encoding在将远程资源转换为字符串时作为其编码。将其设置为 System.Text.Encoding.UTF8 理论上应该可以正常工作。

关于c# - WebClient.DownloadString() 返回带有特殊字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4716470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com