c# 尝试使用 WebClient 下载文件名中包含特殊字符的文件

c# Trying to download a file with WebClient that contains a special character in filename

我正在尝试下载文件名中带有特殊字符 'Ç' 的文件,但 URL 中出现该字符的异常字符串.

System.Net.WebException
HResult=0x80131509
Message=远程服务器返回一个错误:(404) Not Found。
来源=System.Net.Requests

例如:http://www.somesite.com/abcdç.pdf 将在 WebClient 中创建异常。使用 URI 下载文件的另一种方法是什么,或者我该如何解决这个异常?

下面是一些示例代码:

client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
client.Encoding = System.Text.Encoding.UTF8;
byte[] archiveData = wc.DownloadData("http://www.somesite.com/abcdç.pdf");

您可以尝试对特殊字符使用 Uri 编码,例如

www.somesite.com/abcd%C3%A7.pdf

你可以这样得到一个安全的Uri

Uri u = new Uri("http://www.somesite.com/abcdç.pdf");
byte[] archiveData = wc.DownloadData(u.AbsoluteUri);

u.AbsoluteUri 会给你一个编码的 URI。