我尝试根据 FtpWebrequest 通过 FTP 获取文件 - 当文件名包含德语变音符号(如 ä、ö、ü)时,下载失败。
Code:
FtpWebRequest request2 = (FtpWebRequest)WebRequest.Create("ftp://re-web-03.servername.de/" + "filename with ä.xls");
request2.Method = WebRequestMethods.Ftp.DownloadFile;
request2.Credentials = new NetworkCredential("xxx", "xxx");
using (FtpWebResponse response = (FtpWebResponse)request2.GetResponse()) { // <-- Exception: The remote server returned an error: (550) File unavailable ...
将文件名更改为“filename with ae.xls”时,它可以工作。
例外是:
WebException:远程服务器返回错误:(550) 文件不可用(例如,未找到文件、无法访问)。
通过 ftp 的目录列表效果很好并显示文件名:
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://re-web-03.servername.de/");
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential("xxx", "xxx");
using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
{
StreamReader sr = new StreamReader(response.GetResponseStream());
while (!sr.EndOfStream)
{ Console.WriteLine(sr.ReadLine()); } // --> output is "filename with ä.xls"
}
输出是“文件名带有 ä.xls”。
有人有如何处理这个问题的提示吗 - 我对命名该文件没有任何影响......
提前非常感谢托比
可能和编码有关系。有些操作系统支持 utf-8 编码的文件名,有些则不支持;如果您使用 utf-8 编码发送请求,并且服务器将其解释为其他内容,则它将找不到您请求的文件。 OTOH,如果您只是请求目录列表,那么一切都会顺利,因为 utf-8 向后兼容 ascii-7(即,有效的 ascii-7 也是有效的 utf-8)。我的猜测是您正在发送 utf-8 并将结果解释为其他内容或 vv。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)