none
HTTP Download時の2バイト文字の文字化けについて RRS feed

  • 質問

  • ASP.NET C# で掲示板を作成しようとしており、添付ファイルをUploadした後、Downloadするページを作成しております。

    HyperLink コントロールの NavigationURL に
    以下のような関数をもったページを作り Redirect をしています。

    IE6.0 でDownloadすると、[開く][保存][キャンセル]ダイアログが開いて、
    [保存]は問題ないのですが、開くを選択すると日本語が文字化けしてしまいます。
    URLエンコードした文字列のようです

    てすと.ppt
      ↓
    %e3%81%a6%e3%81%99%e3%81%a8[1].ppt

    同様の問題がGotDotNet にもあがっておりますがhttp://www.gdncom.jp/general/mllog/tech/techDetail.aspx?ID=954
    彼の場合は[保存]と[開く] の動作が同一のようです。

    すべてをutf-8 に統一しようとやってみましたが、うまくいきません。
    (もちろん shift-jis もやってみましたが同じでした。)

    ソースコード以外のところに原因があるような気がします。
    (IE6.0の設定とか)

    もし、お分かりの方がいらっしゃいましたらご教示願います。



    環境

    Download.aspx

    <%@ Page Language="C#"  ResponseEncoding="utf-8" .... %>

    // ファイル名検索ロジックは省略

       //  sfname:実際のファイルパス名
       //  ufname:表示上の名前
       public void ExecFileDown(string sfname, string ufname)
        {

            System.Text.Encoding.GetEncoding("utf-8");

            Response.Clear();
            Response.ContentType = "application/octet-stream";
            Response.AppendHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(ufname));

            Response.WriteFile(sfname);
            Response.Flush();
            Response.End();

      }

    --------------

    Web.confog
      <system.web>
        <globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8" culture="ja-JP" uiCulture="ja-JP" />

    --------------

    IE6.0 のオプション
    ■常にUTF-8としてURLを送信する (チェック済み)

    2006年4月12日 1:43

回答

すべての返信

  • 追記です。文字化けするのは、ファイルの本文ではなく、ファイル名のみです。
    ファイルの中身は正常に読めます。

     

     

    2006年4月12日 4:24
  • Content-Dispositionには,UrlEncodeではなく,RFC 2231に定められた方法でエンコードしたものを設定しなければなりません。

    KB 436616 : [PRB] AddHeader, AppendHeader で日本語ファイル名が文字化けする
    http://support.microsoft.com/kb/436616/
    などが参考になるかと思います。

    2006年4月12日 9:34
  • Yuoさん ありがとうございます。

    Internet Explorer はRFC 2231に定められたエンコード方式をサポートしていないということですね。

    なにか別の方法(Content-Disposition 以外)で、日本語を文字化けせずにダウンロードする方法は無いものでしょうか? 

    2006年4月13日 1:08