- PR -

ダウンロードの際の日本語ファイル名が文字化けします。

1
投稿者投稿内容
ひろひろ
常連さん
会議室デビュー日: 2004/07/23
投稿数: 36
投稿日時: 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
投稿数: 36
投稿日時: 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
+"¥"" );
とすることで解決しました。

なぜかはわかりませんが・・。
tanabo
常連さん
会議室デビュー日: 2003/04/24
投稿数: 34
投稿日時: 2004-07-23 18:29
以前同じ問題にあったことがあります。
たしかmod_jkコネクタのどこかのソースで、
レスポンスの文字コードをUTF-8に変換か何か
していたような記憶があります。

私は強引にそのソースを"8859_1"に変換することで
問題を回避しました。
ひろひろ
常連さん
会議室デビュー日: 2004/07/23
投稿数: 36
投稿日時: 2004-07-26 12:58
引用:

tanaboさんの書き込み (2004-07-23 18:29) より:
以前同じ問題にあったことがあります。
たしかmod_jkコネクタのどこかのソースで、
レスポンスの文字コードをUTF-8に変換か何か
していたような記憶があります。


なるほど。そうすると

// 日本語ファイル名
String value="Linux環境構築メモ.txt";
String fileName = new String(value.getBytes("Windows-31J") , "UTF-8" );

でもいけるんでしょうかね。

Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2004-07-26 21:21
ファイル名にUTF-8でURLEncodeかけることによっても回避できると思います。
おにおに
会議室デビュー日: 2004/12/10
投稿数: 5
投稿日時: 2004-12-10 17:16
はじめまして。
私もこの記事と同じ問題に直面して悩んでいました。
TOMCAT環境ですが、文字化けをクリア出来ました。

ひろひろ様のスレッドをお借りして申し訳ないのですが、
websphereではどの様な文字コードでエンコーディングするのでしょうか?
1

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