C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.48592 の関連記事表示

<< 0 >>
■48592  Re[2]: VB.netで全角を含むURLのFTP接続について
□投稿者/ いただっく -(2010/04/09(Fri) 09:35:57)
    No48541 (魔界の仮面弁士 さん) に返信

    魔界の仮面弁士様、お返事ありがとうございます。
    詳しい解説ありがとうございます。

    > FTP サーバー側の環境はわかりますか?
    FTPサーバは「CentOS」を使用していますが、
    客先の駐在業務の為、サーバの詳しい環境は不明です。

    > 「そのサーバーにとって正しい方法」を選択する必要がありますが、相手が IIS 以外のサーバーの場合、
    > その正しい方法を、FtpWebResponse で実装できるかどうかは分かりません。
    やはりFTPサーバー側の環境の調査が必須ということですよね。
    「CentOS」自体あまり知らないのでまずはそこからはじめたいと思います。


    > UTF-8 でエンコードされたバイナリを、本来の UTF-8 でデコードせずに
    > Shift_JIS でデコードした場合の典型的な化け方です。
    このへんのエンコ関連に関しては知識が(一応)あります。
    なので、euf-8で接続できないのが不思議だったのです。


    > # そもそも 123.456.789.012 というアドレスが NG ですが、それは本題では無いので無視するとして。
    もちろんサンプルIPなのでお気になさらずにお願い致します。


    > 接続先のFTPサーバーや、使用しているFTPクライアントによって多少の差異がありますが、
    > たとえば、日本語版 IIS 5.1 の FTP サーバー機能の場合、IE8環境のエクスプローラーからは
    > ftp://localhost/test/%82%A0%82%A0%82%A0%82%A0/%82%A2%82%A2%82%A2%82%A2/
    > のアドレスで接続する事ができますが、FtpWebRequest の場合には、
    > Dim u1 As New Uri("ftp://localhost/test/ああああ/いいいい")
    > Dim u2 As New Uri("ftp://localhost/test/%E3%81%82%E3%81%82%E3%81%82%E3%81%82/%E3%81%84%E3%81%84%E3%81%84%E3%81%84")
    > のいずれかで接続できます。(IIS 以外のサーバーでは、別の指定方法になるかも知れません)
    MS製のIISならやはり「ftp://localhost/test/ああああ/いいいい」と全角のPATHを送信しても大丈夫なんですね。


    >>3.そもそも「ftpRes.ResponseUri.AbsoluteUri」のURLで接続にいっているのでしょうか?
    >
    > 強いて言えば AbsoluteUri の方ですが、そもそも実際の FTP 処理では、%FF%FF…形式の文字列は使われていないはずです。
    「強いて」ということは、VB側でURLはAbsoluteUriだが、FTP処理をかける際には更に変換されているということですか。


    > FTP.EXE をデバッグモード(-d オプション)で使ったことがあれば分かるかと思いますが、
    > 内部的には、たとえば以下のようなデータ交換が行われる事になります(細かい点は端折っています)。
    最終的なやりとりは(RequestやResponse)は環境が異なっても上記みたいにやりとりされているんですね。
    勉強になりました。

    > しかも FtpWebRequest の場合、FtpWebResponse.GetResponseStream() に対して Encoding を指定して
    > 文字列にデコードする事はできるものの、コマンドの文字コードを指定する機能は用意されていないようです。
    なるほど・・・Responseはこちら側でなんとでもなるが、Requestする際は、FTPサーバの環境に変換した文字コードで
    送信する必要がある!ということですね。


    > FTP サーバー側のログを確認してみてください。
    サーバのログは上記の通り客先駐在なのでそこまで見ることはできませんが、

    > 中には、指定していたパスが間違っていた場合にも空の一覧を返して、コマンド自体は正常とみなす実装もあるかも知れません。
    パスが存在しない=空フォルダ と返しているのかも知れませんね。


    > 『Dim 変数名() As 型名』表記の配列宣言と、
    > 『Dim 変数名 As 型名()』表記が混在していますね。
    >
    > 意味は同じですが、どちらかに統一しておいた方が良いと思いますよ。
    以後気をつけたいと思います。




    まだ解決には至っていませんので、引き続きよろしくお願い致します。
記事No.48516 のレス /過去ログ82より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -