- PR -

ダウンロードで文字化け

投稿者投稿内容
progman
大ベテラン
会議室デビュー日: 2005/06/08
投稿数: 227
投稿日時: 2007-02-22 10:40
Windows XP SP2
JDK jdk1.5.0_06
Tomcat 5.5.17

サーバ・クライアント 同環境

サーブレット側で
filename="振込個人"
out=1
が設定されていて
fileName = java.net.URLEncoder.encode( (filename + ( out == 1 ? ".csv" : ".xls")), "UTF-8" );
p.response.setContentType("application/octet-stream;charset=Windows-31J");
p.response.setHeader("Content-Disposition","attachment; filename=" + fileName );
と処理すると

IE6.0 では "振込個人.csv"で
FireFox 1.5.0.9 では "%E6%8C%AF%E8%BE%BC%E5%80%8B%E4%BA%BA-6.csv"

と化けてしまします。

なにか対策はないでしょうか?
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2007-02-22 11:02
引用:

progmanさんの書き込み (2007-02-22 10:40) より:
IE6.0 では "振込個人.csv"で
FireFox 1.5.0.9 では "%E6%8C%AF%E8%BE%BC%E5%80%8B%E4%BA%BA-6.csv"

と化けてしまします。

なにか対策はないでしょうか?



 ブラウザによって挙動が変わるのであれば、
ブラウザの判断をして、処理を変えるしかないでしょう。

http://www.hajimeteno.ne.jp/i-mode/user_agent.html
progman
大ベテラン
会議室デビュー日: 2005/06/08
投稿数: 227
投稿日時: 2007-02-22 13:23
レスありがとうございます。

ブラウザ毎のコーディングはできればしたくないです。
それなら個別の処理をおこなわず、制限事項となる可能性もあります。

するとしても、FireFoxでは、どのような記述をすれば日本語ファイル名が正しく
送信できるでしょう。

fileName = (filename + ( out == 1 ? ".csv" : ".xls"));
ではだめですよね。

日本語はあきらめて、1バイト文字で送るべきでしょうか?
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2007-02-22 14:24
 私もFireFoxなんて殆ど使わない口なので、
調べないと解りません・・・。
FireFoxの仕様の問題だと思いますから、
FireFoxのサイトを見るとかしてみましょう。

 個人的には、FireFoxなんて微々たるシェアなので、
そんなもの無視して良いんじゃないかと思います。
ターゲットとしているユーザーに、
FireFoxを使うような方々入るなら別ですが。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-02-22 14:43
http://www.wsdeveloper.com/viewtopic.php?p=149
こちらが参考になるでしょうか。
BackDoor
ぬし
会議室デビュー日: 2006/02/20
投稿数: 831
投稿日時: 2007-02-22 15:01
こんにちは。割り込み失礼します。

引用:
progmanさんの書き込み (2007-02-22 13:23) より:

FireFoxでは、どのような記述をすれば日本語ファイル名が正しく送信できるでしょう。

fileName = (filename + ( out == 1 ? ".csv" : ".xls"));
ではだめですよね。


直接回答は判りませんが、日本語ファイル名にこだわる理由って何でしょう。

閑話休題
引用:
takuさんの書き込み (2007-02-22 14:24) より:

個人的には、FireFoxなんて微々たるシェアなので、そんなもの無視して良いんじゃないかと思います。


社内用、あるいは自社の提供する仕組みならこの判断はありでしょうが、
受託したケースだと拙いと思いますよ。

引用:
progmanさんの書き込み (2007-02-22 13:23) より:

日本語はあきらめて、1バイト文字で送るべきでしょうか?


冒頭の質問の回答にも因りますが、個人的にはこれが無難な方法かと思います。

taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2007-02-22 15:42
引用:

BackDoorさんの書き込み (2007-02-22 15:01) より:
引用:
takuさんの書き込み (2007-02-22 14:24) より:

個人的には、FireFoxなんて微々たるシェアなので、そんなもの無視して良いんじゃないかと思います。


社内用、あるいは自社の提供する仕組みならこの判断はありでしょうが、
受託したケースだと拙いと思いますよ。


だからターゲットとしているユーザーに、
FireFoxを使う方が入るなら別だと言ってますよね?
BackDoor
ぬし
会議室デビュー日: 2006/02/20
投稿数: 831
投稿日時: 2007-02-22 16:56
あれ、また言葉足らずでしたか・・・。

引用:
takuさんの書き込み (2007-02-22 15:42) より:

だからターゲットとしているユーザーに、FireFoxを使う方が入るなら別だと言ってますよね?


微妙な論点の違いだと思いますが「ターゲットとしているユーザー」と言うより
このシステムの「開発の経緯」を中心に考えた場合の開発の姿勢を考慮したコメント
と捉えて頂きたいです。

・・・上手く説明できませんが、同じことを伝えるにも

引用:
takuさんの書き込み (2007-02-22 14:24) より:

 個人的には、FireFoxなんて微々たるシェアなので、
そんなもの無視して良いんじゃないかと思います。
ターゲットとしているユーザーに、
FireFoxを使うような方々入るなら別ですが。


上記表現(一部誤変換と思われる部分を修正)ではなく

> ターゲットとしているユーザーに
> FireFoxを使うような方々が居るなら別ですが、
> 個人的には、FireFoxなんて微々たるシェアなので、
> 無視できる範囲じゃないかと思います。

こういう表現だったら茶々入れてませんでした。

# これ以上は脱線させたくないので、後はPMで願います。

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