2005.09.05

IEのダウンロードダイヤログで日本語ファイル名が文字化け

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からパラメータを
渡してファイルをダウンロードさせる方法しか今のところ無いようです。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
nishimaki