у меня все заработало, наконец-то ...:)
Использование System.Web.HttpUtility.UrlPathEncode
решает проблему с мусором, но когда вы открываете файл, в имени файла отображаются unicode-uncoded имена вместо реальных японских символов. IE8.)
Таким образом, вместо использования System.Web.HttpUtility.UrlPathEncode
вы должны декодировать имя файла, используя кодировку, используемую для заголовка ответа.
В .NET по умолчанию кодировка заголовка Response - utf-8, измените его на iso-8859-1.
Измените web.config для того же, как показано ниже,
<globalization responseHeaderEncoding="iso-8859-1" .../>
И код будет,
//apply Response header's encoding i.e. iso-8859-1 to the filename.
Dim fileName as String = "在庫あり全商品を24時間以内に出荷.doc"
Dim enc As Encoding = Encoding.GetEncoding("shift_jis")
Dim dec As Encoding = Encoding.GetEncoding("iso-8859-1")
fileName = dec.GetString(enc.GetBytes(fileName))
//Show Download Dialog box and Writting it on Client Side.
Response.ClearHeaders()
Response.ContentType = corspBean.ContentType
Response.AppendHeader("content-disposition", "attachment; filename=""" + fileName + """")
Response.BinaryWrite(bytes)
Response.End()
Теперь, еще одна важная вещь, из-за этого я потратил много времени: это не работает на ASP.NET Development Server , т.е. на сервере, который вы используете для тестирования / отладки веб-приложений. на вашей локальной машине. Итак, разверните решение на IIS и протестируйте оттуда. Он отлично работает на IIS. (а IIS - это судьба каждого приложения ASP.NET;) поэтому не имеет значения, работает оно на сервере разработки ASP.NET или нет)