我下载了一个网页,其中包含具有此类引号的段落
“我从html页面中简单地提取了这一行”
但是当我写入文件时,这个“字符没有正确显示。
WebClient wc = new WebClient();
Stream strm = wc.OpenRead("http://images.thenews.com.pk/21-08-2013/ethenews/t-24895.htm");
StreamReader sr = new StreamReader(strm);
StreamWriter sw = new StreamWriter("D://testsharp.txt");
String line;
Console.WriteLine(sr.CurrentEncoding);
while ((line = sr.ReadLine()) != null) {
sw.WriteLine(line);
}
sw.Close();
strm.Close();
答案 0 :(得分:1)
如果您只想将文件写入磁盘,那么:直接使用Stream
API ,或者(更简单)使用:
wc.DownloadFile("http://images.thenews.com.pk/21-08-2013/ethenews/t-24895.htm",
@"D:\testsharp.txt");
如果您不将其视为二进制文件,那么您需要担心编码 - 仅仅查看sr.CurrentEncoding
是不够的,因为我们不能确保它正确检测到它。 可以是在HTTP标头中报告编码,这将是很好的。它也是在有效载荷开始时在BOM中指定编码。但是,在HTML的情况下,也可以在HTML中指定编码。在所有这三种情况下,将文件视为二进制文件都会改进(对于BOM和html内部情况,它将完全修复它)。