这是由于内容部署标头用于文件流是大于大约 150 字节, 拉丁字符集是等于 150 个字符。 如果是使用非拉丁字符集, 例如日语或俄语格式化内容部署标头可能会发生此行为。
if (fullFileName.Length > 150)
{
byte[] bs = System.Text.Encoding.UTF8.GetBytes(fullFileName);
fullFileName = System.Text.Encoding.Default.GetString(bs); }
http://support.microsoft.com/default.aspx?scid=kb%3Bzh-cn%3B820129
if (fullFileName.Length > 150)
{
byte[] bs = System.Text.Encoding.UTF8.GetBytes(fullFileName);
fullFileName = System.Text.Encoding.Default.GetString(bs); }
http://support.microsoft.com/default.aspx?scid=kb%3Bzh-cn%3B820129
这么写试试:
Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
就乱码了。
尝试以下处理办法:filename = HttpUtility.UrlEncode(new System.Io.FileInfo(filename).Name, System.Text.Encoding.UTF8);