- PR -

ダウンロードファイル名の文字化けについて

1
投稿者投稿内容
AES
会議室デビュー日: 2004/12/10
投稿数: 1
投稿日時: 2004-12-10 15:51
はじめて質問させていただきます。よろしくお願いします。

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のプログラムの中でどうにか対処できるものなのでしょうか?

わかりにくい質問ですみませんが、ぜひご回答よろしくお願いいたします。
1

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