WebClient.DownloadString使用错误的编码

时间:2018-01-03 13:10:14

标签: c# .net character-encoding webclient

我正在使用webclient从sharepoint在线下载XML文件。

但是,当我使用WebClient.DownloadString(string url)方法时,某些字符未被正确解码。

当我使用WebClient.DownloadFile(string url, string file)然后我读取文件时,所有字符都是正确的。

xml本身不包含编码声明。

string wrongXml = webClient.DownloadString(url);
//wrongXml contains Ä™ instead of ę

webClient.DownloadFile(url, @"C:\temp\file1.xml");
string correctXml = File.ReadAllText(@"C:\temp\file1.xml");
//contains ę, like it should.

此外,在Internet Explorer中打开网址时,它会正确显示。

为什么?是因为我的机器上的默认窗口编码还是webclient在使用DownloadString,resp DownloadFile时处理响应的方式不同?

1 个答案:

答案 0 :(得分:1)

现在使用的编码可能不是服务返回的编码。

您可以在发出请求之前设置所需的编码:

webClient.Encoding = Encoding.UTF8;
string previouslyWrongXml = webClient.DownloadString(url);