WebObjects(に限らないけれど)日本語ファイル名のダウンロードはちょっと難しい。文字化けをする。
色々調べて、IE や Firefox ではなんとか解決したのですが、Safari がなんともいけません。
もう少し調べてみよう。
という事で、ここまでのおさらいを....
まず IE ですが Windows 用の場合(きっと6以降かな?)は
encodedFileName = java.net.URLEncoder.encode( new String((filename).getBytes("UTF-8"),"SJIS") );
として、
aResponse.setHeader("attachment; filename=" + "\"" + encodedFileName + "\"","Content-Disposition");
で、なんとかいっているようです。(長い名前は駄目かもしれませんが、テストはしていません。)
Mac 用の IE(テストしたのは OS X 用の IE5.2.3)これの場合は
encodedFileName = new String((filename).getBytes("SJIS"),"ISO-8859-1");
不思議な書き方ですが、なんとなくわかるような気もする。とにかくこういうのを解釈するって事なんですね、きっと。
この方法は Windows 版 IE でもいけていました。
次に、Firefox。(Mac OS X 用 Firefox 1.06でテスト)
encodedFileName = javax.mail.internet.MimeUtility.encodeWord(filename, "ISO-2022-JP", "B");
どうもこれが RFC 2047 というのに従っているらしいのですが、IE や Safari は解釈してくれません。
Opera もこれでいけらしいのですが、テストはしていません。
さて、肝心の Safari。
これが上記のどの方法でもうまくいきません。エンコードした文字列そのままのファイル名で保存しちゃっています。
仕方ないので今のところはダミーのファイル名を返す様にしていますがなんとかしたいなぁ。
以下はお役立ちリンクです。
http://www.wsdeveloper.com/viewtopic.php?t=62
http://support.microsoft.com/default.aspx?scid=kb;ja;436616
http://www.jajakarta.org/kvasir/bbs/technical/112?msg=2#msg703

コメントする