WebClient.DownloadString 使用了错误的编码
WebClient.DownloadString uses wrong encoding
我正在使用 webclient 从在线共享点下载 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 中打开 url 时,它可以正确显示。
这是为什么?是因为我机器上的默认 windows 编码还是网络客户端在使用 DownloadString 和 DownloadFile 时处理响应的方式不同?
可能它现在使用的编码不是服务 returns。
您可以在发出请求之前设置您期望的编码:
webClient.Encoding = Encoding.UTF8;
string previouslyWrongXml = webClient.DownloadString(url);
我正在使用 webclient 从在线共享点下载 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 中打开 url 时,它可以正确显示。
这是为什么?是因为我机器上的默认 windows 编码还是网络客户端在使用 DownloadString 和 DownloadFile 时处理响应的方式不同?
可能它现在使用的编码不是服务 returns。
您可以在发出请求之前设置您期望的编码:
webClient.Encoding = Encoding.UTF8;
string previouslyWrongXml = webClient.DownloadString(url);