none
FTPでの漢字サポートについて RRS feed

  • 質問

  • FTPクライアントアプリを作成しようとしています。

     

    FTPサーバのファイル一覧を取得してみたのですが、漢字ファイル名が取得できません。

    どなたか取得する方法を教えてください。

    サーバは Windows 2003 Server SP3? を使用しています。

     

    以下のコードを使用しています(どこかのサンプルプログラムを流用)。


        private static void List(string listUrl)
        {
                StreamReader reader = null;
                try
                {
                    FtpWebRequest listRequest =
                        (FtpWebRequest)WebRequest.Create(listUrl);
                    listRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
                    listRequest.Credentials = new NetworkCredential("test", "test");
                    FtpWebResponse listResponse =
                        (FtpWebResponse)listRequest.GetResponse();
                    reader = new StreamReader(listResponse.GetResponseStream());
                    Console.WriteLine(reader.ReadToEnd());
                    Console.WriteLine("List complete.");
                }
                catch (UriFormatException ex)
                {
                        Console.WriteLine(ex.Message);
                }
                catch (WebException ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    if (reader != null)
                        reader.Close();
                }
            }
    2008年6月19日 4:21

回答

  • ありがとうございました。

     

    Encodeing が絡んでいそうなのは分かっていたのですが、サーバの方はシフトJISで、

    Encoding に何を指定すれば良いのか分かりませんでした。

    色々試してみた結果、Encoding.Default を使用すればシフトJISのファイル名が

    取得できました。

    2008年6月20日 3:49

すべての返信

  • StreamReader は作成時に未指定の場合 UTF-8 を使用してデコードを行います。

    対象の FTP サーバがファイル名にどんな文字コードを使用しているか調べて、その文字コードを指定して StreamReader を作成してください。

    2008年6月19日 12:42
  • ありがとうございました。

     

    Encodeing が絡んでいそうなのは分かっていたのですが、サーバの方はシフトJISで、

    Encoding に何を指定すれば良いのか分かりませんでした。

    色々試してみた結果、Encoding.Default を使用すればシフトJISのファイル名が

    取得できました。

    2008年6月20日 3:49