编辑:字符正确出现,但在页面中间有这一行<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
,之后特殊字符变为é
(在浏览器中很好地表示),但如果通过 WebClient 下载é
,则表示为eacute;
(没有& )。结束编辑
我正在使用 WebClient + RegEx 从网络中提取摘录。
但是正确设置编码仍然会使é
as eacute;
、ç
as ccedil;
、í
asiacute;
等。
我按照DownloadString 和 Special Characters示例正确设置了字符集(ISO-8859-1
):
System.Net.WebClient wc = new System.Net.WebClient();
wc.DownloadString("https://myurl"); //
var contentType = wc.ResponseHeaders["Content-Type"];
var charset = Regex.Match(contentType, "charset=([^;]+)").Groups[1].Value;
wc.Encoding = Encoding.GetEncoding(charset);
它确实charset
像文档的(ISO-8859-1
)一样设置,但是当我进行后续操作时DownloadString
(我知道我可以在之前设置编码并只做一个wc.DownloadString
,但我想遵循接受的答案的示例):
string result = wc.DownloadString("https://myurl");
特殊字符仍然出错。
注意:我使用的是非英语 Windows 10(如果相关)
注意 2:页面的特殊字符在任何浏览器中都能正确显示
我的问题是,为什么WebClient
即使使用正确的字符集也不能正确下载?