- - PR -
Solaris8上で作成したファイル名が文字化け
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-09-09 13:48
こんにちは。
Webサーバ上(Solaris8,Tomcat)で作成した日本語のファイル名のファイルを windows,IE6より起動したアプレットでFTPダウンロードしたいのですが、 文字化けするせいかダウンロードできません。 どのようにすればよいでしょうか? ファイル名をWindowsのMS932?のエンコードに合わして作成 すればよいのでしょうか? ※流れ @クライアントからリクエストをWebサーバに投げる。 AWebサーバ側で日本語のファイル名のファイルを作成する。 作成したディレクトリがそのままFTPのディレクトリとなる。 (WebサーバとFTPサーバが同じホスト上にある。) Bクライアントにレスポンスを返す。 Cクライアントがアプレットを起動して対象ファイルをダウンロードする。 --------------------------------------------------------------------------- Aサーバ側のソースは以下のような感じ (例で書いたので不正確です。) ※Solaris8上で「/work/ファイル名.txt」を作成する。 /workはFTPのディレクトリとなる。 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class createFile extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ // ファイル出力ストリームを取得 FileOutputStream fw = new FileOutputStream ("/work/ファイル名.txt"); OutputStreamWriter os = new OutputStreamWriter(fw); String str = "datadatadata"; os.write(str); os.close(); fw.close(); } } --------------------------------------------------------------------------- Cアプレットのソースは以下のような感じ (例で書いたので不正確です。) ※/workからファイル名.txtをダウンロードする。 ※FTPクライアントとしてcommons-net-1.4.1.jarを使用 import java.awt.*; import java.applet.*; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; public class downloadApplet extends Applet { public void init() { FTPClient fc = new FTPClient(); fc.connect("host"); fc.login("id", "pass"); fc.changeWorkingDirectory("/work"); String [] fnames = fc.listNames("ファイル名.txt");//ワイルドカードでも使用可能 for(int i=0; i<fnames.length; i++){ fc.setFileType(FTP.BINARY_FILE_TYPE); OutputStream os = new FileOutputStream("c:\\work\\" + fnames[i]); fc.retrieveFile( fnames[i], os); fileFTP.getBinaryFile(ftpclient, dir, fnames[i],localDir, fnames[i]); } fc.logout(); fc.disconnect(); } } --------------------------------------------------------------------------- |
|
投稿日時: 2007-09-10 10:55
FTPクライアントの文字コード設定を変更してみては?
|
|
投稿日時: 2007-09-11 00:43
ありがとうございます。
FTPのエンコード設定や環境設定など 色々メソッドを試したのですがだめでした。 Solaris8上で作成したファイル名に対して、 URLEncoderを使用してエンコードして、 アプレット側でURLDecoderを使用してデコードする 方法をとりました。 以上 |
1