开发者

FtpWebrequest - filename contains german "Umlaute" like ä,ö

I'm trying to get a file via FTP per FtpWebrequest - the download fails when the filename contains german Umlaute like ä,ö,ü.

Code:

FtpWebRequest request2 = (FtpWebRequest)WebRequest.Create("ftp://re-web-03.servername.de/" + "filenam开发者_JAVA技巧e 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 ...

When changing the file name to "filename with ae.xls" it works.

The Exception is: WebException: The remote server returned an error: (550) File unavailable (e.g., file not found, no access).

A Directory Listing via ftp works well and shows the filename:

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"
}

Output is "filename with ä.xls".

Does someone have a tip how to deal with that problem - I do not have any influence on naming that files ...

Many thanks in advance Tobi


It might have something to do with encodings. Some OSes support utf-8 encoded filenames, others don't; if you send a request using utf-8 encoding, and the server interprets it as something else, it won't find the files you request. If, OTOH, you just request a directory listing, all goes well because utf-8 is backward compatible with ascii-7 (that is, valid ascii-7 is also valid utf-8). My guess is you're sending utf-8 and interpret the result as something else, or vv.


Fetching the Filelist in UTF7 Encoding:

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

did return the filename "Cases täglich .xls" in a way I can Downlod via Method "DownloadFile"

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜