使用页面编码

时间:2017-11-10 10:18:42

标签: c# encoding character-encoding webclient downloadstring

编辑:字符正确显示,但在页面中间有<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">行,之后特殊字符变为é &eacute; 1}}(在浏览器中表示正常),但如果通过WebClient下载,则表示为eacute;(不包含&amp; )。 结束编辑

我正在使用WebClient + RegEx从网页中提取摘录。

但正确设置编码仍会使éeacute;çccedil;íiacute;等。

我按照DownloadString and 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即使使用正确的字符集设置也无法正确下载?

1 个答案:

答案 0 :(得分:-1)

使用System.Text;

wc.Encoding = Encoding.UTF8;