Internet Explorer 7 または 6.0 の [ダウンロード] ダイアログ ボックスで [開く] ボタンにてファイルを開く場合、タイトル バーに意図しないファイル名が表示される

現象
Windows Internet Explorer 7 または Microsoft Internet Explorer 6.0 にて Content-Disposion ヘッダーの filename を HttpUtility.UrlEncode で URL エンコードしている ASPX ページからファイルをダウンロードするため、[開く] をクリックしてファイルを開いた場合、アプリケーション ウィンドウのタイトル バーに意図しないファイル名が表示されます。
原因
Content-Disposion ヘッダーの filename が エンコード方法指定なしの HttpUtility.UrlEncode で URL エンコードされている場合、Internet Explorer はそのファイル名を UTF-8 でエンコードし、キャッシュを作成します。[ダウンロード] ダイアログ ボックスの [開く] ボタンをクリックしてファイルを開く場合、キャッシュ ファイル名をデコードせずにタイトル バーに表示するため、この問題が発生します。
解決方法
Web サーバーの管理者がこの問題を解決するには、次のいずれかの方法で操作します。
  • ファイル名を 1 バイト文字に変更します。
  • ファイル名を HttpUtility.UrlEncode でエンコードせず、Web サーバー側 (ASP.NET 2.0) の構成ファイルで globalization 要素の responseHeaderEncoding 属性に "shift_jis" を指定します。
詳細

問題の再現手順

  1. 以下の 3 つのファイル (default.html、test.aspx、test.txt) を作成します。
    <--- default.html  ---><html><body><form method="post" action="test.aspx"><input type="submit"></form></body></html>
    <--- test.aspx ---><%@ Page language="C#" %><%@ Import Namespace="System.IO" %><%FileStream MyFileStream = new FileStream(Server.MapPath("./test.txt"), FileMode.Open, FileAccess.Read);long FileSize = MyFileStream.Length;byte[] Buffer = new byte[(int)FileSize];MyFileStream.Read(Buffer, 0, (int)FileSize);MyFileStream.Close();Response.Clear();Response.ClearHeaders();Response.ClearContent();Response.AddHeader("Content-Length", Buffer.ToString());Response.AddHeader("Content-Disposition", "attachment; filename="     + HttpUtility.UrlEncode("あいうえお.txt"));Response.BinaryWrite(Buffer);Response.Flush();Response.End();%>
    <--- test.txt --->TEST
  2. 手順 1 で作成した 3 つのファイルを IIS の同じディレクトリに配置します。
  3. Internet Explorer を起動し、手順 2 で公開した Web ページ default.html にアクセスします。
  4. クエリ送信ボタンをクリックします。
  5. ファイルの [ダウンロード] ダイアログ ボックスが表示されたら、[開く] ボタンをクリックします。

結果

アプリケーションのタイトル バーに意図しないファイル名が表示されます。
関連情報
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
436616 ファイルをダウンロードする ASP.NET Web ページで日本語ファイル名が文字化けする
プロパティ

文書番号:943570 - 最終更新日: 10/04/2016 17:56:00 - リビジョン: 4.0

Windows Internet Explorer 7 in Windows Vista, Windows Internet Explorer 7 for Windows XP, Windows Internet Explorer 7 for Windows Server 2003, Microsoft Internet Explorer 6.0

  • kbharmony kbexpertiseinter kbtshoot kbsample KB943570
フィードバック