- - PR -
ダウンロードの際の日本語ファイル名が文字化けします。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-07-23 12:30
はじめまして。
以下の環境でダウンロードのサーブレットを作成しようとしています。 Apache 1.3.31 mod_jk 1.2 Tomcat 4.1.30 OS RedHat AS2.1 jdk1.4.2 で、クライアントはIE6.0SP1です。 文字化けが起こるのはTomcat+Apacheの連携にした時のみで Tomcatの簡易HTTPサーバーのみの動作ではダウンロードした文字が化けることは ありません。 「Linux環境構築メモ.txt 」が「Linuxツ甘つ仰ォツ構ツ築ツδ・δ・1].txt」という形で 文字化けします。 以下にその部分のコードを記述しておきます。 response.setContentType("application/octet-stream"); // 日本語ファイル名 String value="Linux環境構築メモ.txt"; String fileName = new String(value.getBytes("Windows-31J") , "8859_1" ); response.setHeader("Content-Disposition", "attachment;filename=¥"" + fileName +"¥"" ); ※上記の「¥」は見やすいように全角にしてあります。コード上は半角です。 (application/octet-streamにしているのは、txtファイルだけでなく、どのような 拡張子であってもダウンロードできるようにとの配慮からです。) Googleにて検索し似たような障害を扱っているページを探すことは出来たのですが、解決には至りませんでこのように投稿させていただきました。 宜しくお願いします。 | ||||
|
投稿日時: 2004-07-23 14:23
自己レスです。
>response.setContentType("application/octet-stream"); >// 日本語ファイル名 >String value="Linux環境構築メモ.txt"; >String fileName = new String(value.getBytes("Windows-31J") , "8859_1" ); >response.setHeader("Content-Disposition", "attachment;filename=¥"" + fileName +"¥"" ); String value="Linux環境構築メモ.txt"; String fileName = java.net.URLEncoder$encode(value,"UTF-8"); response.setHeader("Content-Disposition", "attachment;filename=¥"" + fileName +"¥"" ); とすることで解決しました。 なぜかはわかりませんが・・。 | ||||
|
投稿日時: 2004-07-23 18:29
以前同じ問題にあったことがあります。
たしかmod_jkコネクタのどこかのソースで、 レスポンスの文字コードをUTF-8に変換か何か していたような記憶があります。 私は強引にそのソースを"8859_1"に変換することで 問題を回避しました。 | ||||
|
投稿日時: 2004-07-26 12:58
なるほど。そうすると // 日本語ファイル名 String value="Linux環境構築メモ.txt"; String fileName = new String(value.getBytes("Windows-31J") , "UTF-8" ); でもいけるんでしょうかね。 | ||||
|
投稿日時: 2004-07-26 21:21
ファイル名にUTF-8でURLEncodeかけることによっても回避できると思います。
| ||||
|
投稿日時: 2004-12-10 17:16
はじめまして。
私もこの記事と同じ問題に直面して悩んでいました。 TOMCAT環境ですが、文字化けをクリア出来ました。 ひろひろ様のスレッドをお借りして申し訳ないのですが、 websphereではどの様な文字コードでエンコーディングするのでしょうか? |
1