我想生成带有特殊字符的PDF文件。
我的代码如下:
MemoryStream memoryStream = // get memory stream relevant to pdf file
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF32;
HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}.pdf", downloadLink));
HttpContext.Current.Response.ContentType = @"application/pdf";
HttpContext.Current.Response.BinaryWrite(memoryStream.ToArray());
这适用于downloadLink
的普通字符。但对于ABC_50_Română
等特殊字符,则下载文件包含名称为ABC_50_Română
且无法识别的字符。
我尝试使用System.Text.Encoding.UTF32
;和Encoding.GetEncoding("Windows-1252")
ContentEncoding
。但无法解决问题。
修改 仅在 Internet Explorer
中会出现此问题答案 0 :(得分:0)
我在调用Response.AppendHeader之前将FileName转换为UTF8解决了这个问题
if ((HttpContext.Current.Request.Browser.Type.ToUpper(CultureInfo.InvariantCulture).StartsWith("IE")) || (HttpContext.Current.Request.Browser.Type.ToUpper(CultureInfo.InvariantCulture).StartsWith("INTERNETEXPLORER")))
downloadLink = HttpUtility.UrlEncode(downloadLink, UTF8Encoding.UTF8).Replace("+", " ");
在Here
中找到的好文章