ASP.NETでUTF-8BOM付きテキストファイルをダウンロードさせる方法
ASP.NETでUTF-8BOM付きテキストファイルをダウンロードさせる方法
Response.ContentType = "application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment; filename=Sample.txt"); //BOMを送信(ココが今回のポイント) byte[] bom = System.Text.Encoding.UTF8.GetPreamble(); Response.BinaryWrite(bom); //本文を送信 string text = "サンプルテキスト"; Response.BinaryWrite(Encoding.UTF8.GetBytes(text)); Response.End();
どんな状況で、こんなものが必要になることがあるかというと、
ASP.NETでクライアントにテキストファイルをダウンロードさせる場合、
クライアントのOSがWindowsであれば、
Shift-JISのファイルをダウンロードさせれば、OS標準のエディタで開けますが、
同じファイルをMacで開こうとすると、
OS標準のエディタでは、Shift-JISを開けるように設定しないと開けません。
じゃあ、UTF-8であれば開くのでは?と思ってエンコードだけをUTF-8(BOMなし)にしても、
設定変更しないと開けません。
そこで、UTF-8BOM付きであれば、WindowsでもMacでもOS標準のエディタで
特別な設定なしに開けます。(古いOSを除く。)
で、BOMってどうやって付けるの?ってことで今回の内容です。