
ファイルをダウンロードする際に、ファイルを読み込み、
ServletOutputStreamに書き込んでいます。
その際に、ダウンロードファイル名に2バイト文字が
大量に含まれていると、クライアントから要求したサーブレット名に
置き換わってしまいます。
また、記号を含む長い日本語ファイル名をダウンロードした場合は
一部の文字だけが別の文字に置き換わっている現象も
発生します。
ASCII文字のみで構成されたファイル名、
もしくは短い日本語ファイル名であれば問題はありません。
ヘッダへの設定は以下の様に行っています。
response.setContentType( "application/octet-stream" );
response.setHeader(
"Content-Disposition",
"attachment; filename=" +
java.net.URLEncoder.encode( downloadFileName, "UTF-8" ) );
Content-Dispositionに設定するファイル名を
UTF-8でURLEncoder.encodeしているのですが、
ログ出力すると、2バイト文字のみのファイル名であれば
25~26文字程度を超えた時点で、MIME変換後の文字長が
255文字を超過してしまい、リクエスト要求したサーブレット名に
置き換わってしまうように見受けられます。
いま作っているシステムはInternetExploler5.5SP2以降のIEで動作することが仕様となっています。
No.1ベストアンサー
- 回答日時:
環境はApache+Tomcatでしょうか?
Tomcatのみの場合、ファイル名はSJISのバイナリーを送れば大丈夫だったと思います。Apacheを通した場合、Apacheとのコネクターで何やらコードの変換が行われるみたいでファイル名が化けるのでURLエンコードが必要みたいです。コネクターのソースを変更してリコンパイルすればいいのかもしれませんがやった事が無いので確かな事が言えません。
文字化けは、ファイルシステムのファイル名(EUC or SJIS)をStringにする時にUnicodeに変換できないで化けていると思われますUnicodeにする限り避けられないのではないでしょうか。
日本語ファイル名の取り扱い苦労しますよね。決定的な回答ができなくてすいません。お悩み共有と言うか参考程度に受け取って頂ければ思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Google Drive 【Googleドライブ】ドライブ上内でのフォルダ移行について 4 2022/11/30 12:50
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
- その他(メールソフト・メールサービス) メールソフトを教えてください 1 2023/03/28 23:32
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ダブルクォーテーションのrepla...
-
TEXTAREAからのデータを改行入...
-
javaで質問です。 文字列2023/2...
-
int型のゼロ埋め
-
エクセルVBAで「〜」が表現でき...
-
4桁の数字を A*1000+B*100+C*1...
-
DBから取得したデータの文字化け
-
phpでの文字コード変換について
-
javaでのOracleのデータ登録の...
-
文字コード変換
-
カタカナをローマジに変換する。
-
文字列の比較
-
byte配列をImageに変換する
-
PerlプログラムをJavaに変換す...
-
なぜか + が半角スペースに変換...
-
javascriptで文字列のsjis利用...
-
VC++にてCString型のフルパスを...
-
Path型をString型へ変換する(Java)
-
javaの初歩的な質問です。
-
IE11においてのIME予測変換時の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javaで質問です。 文字列2023/2...
-
ダブルクォーテーションのrepla...
-
javascriptで文字列のsjis利用...
-
javaの初歩的な質問です。
-
Visual Basic でのコードをASCI...
-
JavaのStringクラスに「外字」...
-
Path型をString型へ変換する(Java)
-
エクセルVBAで「〜」が表現でき...
-
int型のゼロ埋め
-
JAVAでのShift-JISとEUC-JP間の...
-
C言語32bitから64bitの移行につ...
-
UTF-8とUnicodeの互換性
-
文字列の比較
-
COBOLで半角カナを全角カナに変換
-
substring バイト単位でやりたい
-
Windows-31Jからutf-8への変換...
-
カタカナをローマジに変換する。
-
[Javascript]エンターキー押下...
-
byte型のマイナスの扱いについて
-
文字化け対策について
おすすめ情報