引号用C#编码

时间:2013-08-22 08:21:39

标签: c# encoding

我下载了一个网页,其中包含具有此类引号的段落

“我从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();

1 个答案:

答案 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内部情况,它将完全修复它)。