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 - 最終更新日: 2016/10/04 - リビジョン: 1

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

フィードバック