- PR -

FTPへのjavaでのアクセス

投稿者投稿内容
れんれん
常連さん
会議室デビュー日: 2005/07/25
投稿数: 44
投稿日時: 2006-04-12 07:24
おはようございます。

今WindowsXPのTinyFTPDeamonへのJavaを使ってのアクセスを練習しています。

つなぎ方はソケットを通して、FTPのコマンドを送るやり方です。
NLSTでファイル一覧を取得するときに、意味不明な問題が起こります。

取得するデータを、fileList[i].getBytes( "MS932" ), "MS932" )とすると、
日本語文字化けが起こります。しかし、一応取得できます。
それで
fileList[i].getBytes( "iso-8859_1" ), "Windows-31J )として、日本語の文字化けを
回避していました。 今までは。

しかし、今同じように実行してみると、何も取得できません。

fileList[i].getBytes( "MS932" ), "MS932" )に戻すと、文字化けはありますが
取得できます。原因は何が考えられますでしょうか?

FTPサーバーの文字エンコードは、S-JISにしてあります。

よろしくお願いします。
れんれん
常連さん
会議室デビュー日: 2005/07/25
投稿数: 44
投稿日時: 2006-04-12 07:45
しかも、今iso-8859_1から8859_1へのエンコーディングにしたら上手くいきました。

今まではiso-8859_1でうまくいっていたのに、原因は何なのでしょう?
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-04-12 11:11
iso-8859_1というのはタイプミスではなく、このとおりですか? iso-8859-1ではなく?
れんれん
常連さん
会議室デビュー日: 2005/07/25
投稿数: 44
投稿日時: 2006-04-13 09:21
ご指摘ありがとうございます。

今見たら、確かに”iso-8859-1”としたら"8859_1"と同じように動きます。

ひょっとしたら、私が何かの拍子にiso-8859-1をiso-8859_1としたのかもしれません。
すみませんです。

私は、ファイル名を取得するときにWindowだとShift-JISだから、
fileList[i].getBytes( "iso-8859-1" ), "Windows-31J" )とするのだと
いう認識なのですが、Linuxだとどうすればいいのでしょうか?

EUC-JPだからfileList[i].getBytes( "iso-8859-1" ), "EUC-JP" )なのでしょうか?

よろしくおねがいします。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-04-13 11:24
filelistというのが何者なのかわからないのですが、FTPからのNLISTの実行結果を文字列に
して分割したものですか? であれば、バイト列から文字列にする際に、文字コードを指定すれば
いいと思うのですが。

また、「Windows」「Linux」というのはサーバの話ですか? クライアントの話ですか?
どちらにしても情報が足りないです。
れんれん
常連さん
会議室デビュー日: 2005/07/25
投稿数: 44
投稿日時: 2006-04-17 23:54
こんばんは。返事が遅れました。

fileList[i]というのは、FTPからのNLISTの実行結果の文字列です。取得した複数のファイルをarrayListに入れたのでそれを、あらためて一つ一つ取り出しているところです。

実際にFTPサーバをLinuxで試したのですが、
String str = new String(fileList[i].getBytes( "iso-8859-1" ), "EUC-JP" );
で、文字化けは直りました。(プログラムはwindowsXP上)

で、今度はダウンロードを実行してみました。
「RETR ファイル名」を実行するやり方です。

日本語のファイルをダウンロードするとき、FTPがWindowsでは問題なかったのですが、Linuxではダウンロードできませんでした。
日本語以外のファイル名はダウンロードできました。


たぶん「RETR ファイル名」が、正しく実行できていないと思うのですが、
この場合、どのような文字コードを送ればよいのでしょうか?










れんれん
常連さん
会議室デビュー日: 2005/07/25
投稿数: 44
投稿日時: 2006-04-18 11:57
こんにちは。自己レスです。

システムに「RETR ファイル名」を打ち出してみると、文字化けはしてません。

ただし、文字化けをしていないのはShift_JISです。

FTPサーバの問題なのでしょうか?

よろしくお願いします。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-04-18 12:40
引用:

れんれんさんの書き込み (2006-04-18 11:57) より:
システムに「RETR ファイル名」を打ち出してみると、文字化けはしてません。


この意味がわからないのですが、「システム」とは何のことですか? 「打ち出してみる」とは
何をした、ということですか?

引用:

ただし、文字化けをしていないのはShift_JISです。


これも意味がわかりません。一体何がShift_JISなんですか?

前の書き込みもそうですが、具体的に示してもらわないと問題がどこにあるのかわからないです。
できればコードで示してください。

スキルアップ/キャリアアップ(JOB@IT)