【问题标题】:FtpWebrequest - filename contains german "Umlaute" like ä,öFtpWebrequest - 文件名包含德语“元音变音”,如 ä,ö
【发布时间】:2010-07-30 08:37:50
【问题描述】:

我正在尝试通过 FTP 每个 FtpWebrequest 获取文件 - 当文件名包含德语变音符号(如 ä,ö,ü)时下载失败。

代码:

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 ...

将文件名更改为“带有 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 的文件名”。

有没有人知道如何处理这个问题 - 我对命名这些文件没有任何影响...

非常感谢托比

【问题讨论】:

    标签: c# ftpwebrequest


    【解决方案1】:

    这可能与编码有关。有些操作系统支持 utf-8 编码的文件名,有些则不支持;如果您使用 utf-8 编码发送请求,并且服务器将其解释为其他内容,它将找不到您请求的文件。如果,OTOH,你只是请求一个目录列表,一切顺利,因为 utf-8 向后兼容 ascii-7(也就是说,有效的 ascii-7 也是有效的 utf-8)。我的猜测是您正在发送 utf-8 并将结果解释为其他内容或 vv。

    【讨论】:

    • 非常感谢 - 这是一个编码问题 - 我试图以 ASCII 格式获取文件列表(目录列表)(StreamReader sr = new StreamReader(response.GetResponseStream(),Encoding.ASCII) ;) - 但这并没有成功......
    【解决方案2】:

    以 UTF7 编码获取文件列表:

    StreamReader sr = new StreamReader(response.GetResponseStream(),Encoding.UTF7);
    

    确实以我可以通过方法“DownloadFile”下载的方式返回了文件名“Cases täglich .xls”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-14
      • 2015-03-17
      • 2012-06-28
      • 2021-06-08
      • 2018-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多