IE画面上にファイル名がリンク表示されており、 ファイル名のクリックで起動されるDownloadServletを作成しました。 日本語を含むファイル名のダウンロードを行うと、 「ファイルのダウンロード」ダイアログではファイル名がきちんと表示されるのですが、 「ファイルの保存」ダイアログでのファイル名が文字化けしてしまいます。 ダウンロード実施後のファイル名も文字化けのままです。 servletでのレスポンスヘッダの設定は以下のように行っています。 res.setContentType("application/octet-stream; charset=Shift_JIS"); res.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(filename, "UTF-8")); 現象が起きている環境はWindows2000Professional, IE6.0で、 WindowsXPなら問題ありませんでした。 例えば「通達.pdf」というファイル名だと、 ”通達”という文字列が”騾夐#”と化けます。 多少調べてみたところURLEncoderではUTF-8コードを%+16進数文字に変換するので、 結果が以下のようになります。 %E9%80%9A%E9%81%94.PDF これをデコード時?にまずUTF-8として読んで、 それからSJIS変換すれば?ちゃんと読めるのかと思うのですが、 どうも「%E9%80%9A%E9%81%94」をそのままSJISコードとしてデコードして 「騾(E980)夐(9AE9)#(8194)」となっている感じです。 ダウンロード処理で出すダイアログはIEに依存しているので 特にデコードなどを自分で行っているわけではないですし、 WindowsXPではちゃんと表示されるなど、 デコード方式がOSに依存?しているような気もするので対処の方法がわかりません。 ダウンロードservletのプログラムの中でどうにか対処できるものなのでしょうか? わかりにくい質問ですみませんが、ぜひご回答よろしくお願いいたします。
↧