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

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

C# と VB.NET の入門サイト

FTP転送での日本語について


(過去ログ 3 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■3369 / inTopicNo.1)  FTP転送での日本語について
  
□投稿者/ Okumin 二等兵(4回)-(2006/04/30(Sun) 14:01:18)

分類:[C#] 


分類:[C#] 

C#の超初心者です。
見よう見まねでファイルをFTPサーバーへアップロードするものを作りました。
以下のようなコードで、PCの C:\01.txt をサーバーに転送することはできたのですが、
01.txtの中に日本語が混ざると、そこだけ文字化けしたり文字が削除されたりします。
ASCII文字だけの場合は問題なく転送されます。
(暗号化については考慮していません)

using System.Net

Try
{
  FtpWebRequest request = (FtpWebRequest)WebRequest.Create _
    "ftp://ftp.….co.jp/01.txt");
  request.Method = WebRequestMethods.Ftp.UploadFile;
  request.UseBinary = false;
  request.Credentials = new NetworkCredential("ID…", "PW…");

  //カレントディレクトリの設定
  System.IO.Directory.SetCurrentDirectory(@"C:\");
  StreamReader sourceStream = new StreamReader("01.txt");

  //byte配列に入れる
  byte[] fileContents = System.Text.Encoding.GetEncoding _
              ("Shift_JIS").GetBytes(sourceStream.ReadToEnd());
  sourceStream.Close();

  //転送
  Stream requestStream = request.GetRequestStream();
  requestStream.Write(fileContents, 0, fileContents.Length);
  requestStream.Close();

  //状態取得
  FtpWebResponse response = (FtpWebResponse)request.GetResponse();
  MessageBox.Show("Upload Completed");
  response.Close();
} …

byte配列に入れている所に問題があると思うのですが、色々調べても有効な
解決策が見つかりませんでした。
文字化けせずに送る方法をご存知でしたら教えて頂けないでしょうか。
初歩的なことで申し訳ございませんが、よろしくお願い致します。

0
引用返信 編集キー/
■3374 / inTopicNo.2)  Re[1]: FTP転送での日本語について
□投稿者/ 中博俊 神(391回)-(2006/04/30(Sun) 17:39:56)
中博俊 さんの Web サイト

分類:[C#] 

相手のサーバは何者ですか?
euc-jpなサーバじゃありませんか?

0
引用返信 編集キー/
■3376 / inTopicNo.3)  Re[2]: FTP転送での日本語について
□投稿者/ Okumin 二等兵(5回)-(2006/04/30(Sun) 20:19:25)

分類:[C#] 

テストで Infoseek(楽天)で借りた無料サーバ(isweb)を使っています。
その詳しい内容(設定)についてはすぐに解らないのですが…。

"Shift-JIS" の所を色々と変えてやってみたのですが、いずれも2バイト文字だった所が表示されないか、
0123→OPQR、あいうえ→????、アイウエ→ACEG といった感じで(Encode方式により多少異なる)、
転送後に1バイト文字へ化けています。
試したエンコーディングは次の通りです。

 シフトJIS     (コード・ページ値 0, 932)
 Unicode      (同1200)
 Unicode Big-Endian (1201)
 EUC-JP       (20932, 51932)
 JIS        (50220〜50222)
 utf-7       (65000)
 utf-8       (65001)

エンコードしてbyte配列に入れて送るという処理はあまりきれいではないような気がするのですが、
エンコードせずにそのまま送る(?)方法などは何かあるのでしょうか。
(例えばjpeg画像などを送る場合は上のやり方ではちょっと変だと思います…)
不勉強で申し訳ございませんが、何かヒントのようなものを頂ければと思います。
よろしくお願いします。

0
引用返信 編集キー/
■3379 / inTopicNo.4)  Re[3]: FTP転送での日本語について
□投稿者/ 中博俊 神(393回)-(2006/04/30(Sun) 21:43:52)
中博俊 さんの Web サイト

分類:[C#] 

中身は見ていませんが、euc-jpを標準のWindowsでは変換できなかったはずですが、

>エンコードしてbyte配列に入れて送るという処理はあまりきれいではないような気がするのですが、

きれい汚いの問題ではないと思います。

というかftpソフトでもASCIIとかBinaryとかあるでしょ?あれですよあれ。

とりあえず本当にeuc-jpに変換できているか確認してください。



0
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -