2

FtpWebrequest ごとに FTP 経由でファイルを取得しようとしています。ファイル名に ä、ö、ü などのドイツ語のウムラウテが含まれていると、ダウンロードに失敗します。

コード:

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 を含むファイル名」です。

誰かがその問題に対処するためのヒントを持っていますか - 私はそのファイルの命名に影響を与えません...

事前にどうもありがとう トビ

4

2 に答える 2

2

エンコーディングと関係があるかもしれません。utf-8 でエンコードされたファイル名をサポートする OS もあれば、サポートしない OS もあります。utf-8 エンコーディングを使用してリクエストを送信し、サーバーがそれを別のものとして解釈すると、リクエストしたファイルが見つかりません。OTOH、ディレクトリのリストを要求するだけの場合、utf-8 は ascii-7 と下位互換性があるため、すべてうまくいきます (つまり、有効な ascii-7 は有効な utf-8 でもあります)。私の推測では、あなたは utf-8 を送信し、結果を別のもの、または vv として解釈しています。

于 2010-07-30T08:42:25.360 に答える
1

UTF7 エンコーディングでのファイルリストの取得:

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

メソッド「DownloadFile」を介してダウンロードできる方法で、ファイル名「Cases täglich .xls」を返しました

于 2010-07-30T09:03:00.340 に答える