ASP.NETでファイルをダウンロードするプログラムを作成した際に、
ファイル名に日本語が含まれている場合、文字化けが発生しました。
今回作成した処理の手順としては、
■ファイルアップロード処理
1.ファイルをWebサーバにアップロードする。
2.ファイル名を半角数値に変更する。
3.元のファイル名をデータベース(DB)に登録する。
■ファイルダウンロード処理
1.DBから元のファイル名を取得する。
2.ダウンロードダイヤログを表示して、DBから取得したファイル名を
セットする。
このファイル名を元の名前にセットする時に、Web.config等の設定を
無視してUTF-8へ変換されたファイル名をセットしてしまうようです。
OSのロケールを日本語に設定している場合、
Internet Explorer(以下IE)ではShift JIS以外のファイル名
正常に扱うことが出来ないため、UTF-8のファイル名は文字化けしてしまうのです。
Microsoftの技術情報を見たところ、ASP.NETやIEの設定を変えたと
しても、設定を無視してしまうため、回避できません。
HTTPヘッダーでURLEncodeを行ったとしても、完全に回避することは出来ないそうです。
実際、試してみましたが文字化けは直りませんでした。
有効だと思われる回避策は、ファイル名に日本語を使用することを禁止
させるのが一番簡単かと思います。
どうしても日本語ファイル名を使いたいのであれば、
ダウンロードプログラムをASPやCGIで別途作成し、ASP.NETからパラメータを
渡してファイルをダウンロードさせる方法しか今のところ無いようです。