ファイルをダウンロードする ASP.NET Web ページで日本語ファイル名が文字化けする
聞かれたので,回避策を伝えた。
ASP.NET 1.0, 1.1 や Internet Explorer の設定では、これらの現象を回避することはできません。ファイル名に使用する文字をご検討ください。 なお、ASP.NET Web アプリケーションにて Content-Disposition を含む HTTP ヘッダーで日本語文字列を使用する場合は、下記のように URLEncode することで、ある程度の問題を回避することができます。
このサンプルコードって
Response.AppendHeader("Content-Disposition","attachment; filename=" & HttpUtility.UrlEncode("日本語") & ".txt")
が正解なんだよね。
こんな感じで使うと良いよ。
Dim ShiftJisEncode As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift-JIS") Response.AppendHeader("Content-Disposition", _ "attachment; filename=" & HttpUtility.UrlEncode("価格リスト_20090301") & ".txt") Response.ContentType = "application/octet-stream" Response.BinaryWrite(ShiftJisEncode.GetBytes("品名,価格")) Response.BinaryWrite(ShiftJisEncode.GetBytes("ASUKA YAMATO SH,12800JPY")) Response.End()