ASP.NET导出到Excel,如果文件名包含字符#或/,则会在弹出“打开/保存”对话框时将其转换为下划线(35;)!

ASP.NET导出到Excel,如果文件名包含字符#或/,则会在弹出“打开/保存”对话框时将其转换为下划线(35;)!,asp.net,export-to-excel,Asp.net,Export To Excel,最终文件名=>类别\文件名 我会很感激你的帮助,请帮忙 在Windows(或大多数其他操作系统)下,文件名不能包含字符/,因此无法阻止该字符被转换#被大多数浏览器所忽略,其中最奇怪的是IE 内容配置文件名有点有限。非ASCII字符在其中不可靠,根据RFC进行的正确转义也不起作用。如果要将Unicode字符转换为默认下载文件名​—或者某些其他标点符号,包括IE中的#,您必须对其进行URL编码,并将其作为路径的尾随部分,忽略内容处置文件名。例如: string filename = "Categor

最终文件名=>类别\文件名


我会很感激你的帮助,请帮忙

在Windows(或大多数其他操作系统)下,文件名不能包含字符
/
,因此无法阻止该字符被转换
#
被大多数浏览器所忽略,其中最奇怪的是IE

内容配置
文件名有点有限。非ASCII字符在其中不可靠,根据RFC进行的正确转义也不起作用。如果要将Unicode字符转换为默认下载文件名​—或者某些其他标点符号,包括IE中的
#
,您必须对其进行URL编码,并将其作为路径的尾随部分,忽略内容处置文件名。例如:

string filename = "Category#FileName";

response.AddHeader("content-disposition", "attachment; filename=" + filename);
response.ContentType = "text/csv";
response.AddHeader("Pragma", "public");
myscript.aspx:

http://www.example.com/myscript.aspx/foo%23bar.xls

(您仍然不能以这种方式将
/
包含在文件名中,因为web服务器往往会阻止包含%2F的所有URL。在任何情况下,如上所述,您都无法将其与
/
一起保存在文件名中。)

文件名不能包含Windows(或大多数其他操作系统)下的字符
/
,所以你无法阻止那个人被转化
#
被大多数浏览器所忽略,其中最奇怪的是IE

内容配置
文件名有点有限。非ASCII字符在其中不可靠,根据RFC进行的正确转义也不起作用。如果要将Unicode字符转换为默认下载文件名​—或者某些其他标点符号,包括IE中的
#
,您必须对其进行URL编码,并将其作为路径的尾随部分,忽略内容处置文件名。例如:

string filename = "Category#FileName";

response.AddHeader("content-disposition", "attachment; filename=" + filename);
response.ContentType = "text/csv";
response.AddHeader("Pragma", "public");
myscript.aspx:

http://www.example.com/myscript.aspx/foo%23bar.xls

(您仍然不能以这种方式将
/
包含在文件名中,因为web服务器往往会阻止包含%2F的所有URL。在任何情况下,如上所述,您都无法在文件名中使用
/
保存它。)

遗憾的是,这是IE的一个限制

根据Microsoft的说法,如果在文件附件的文件名属性中使用下列字符,它们将被转换为下划线:

response.AddHeader("Content-Disposition", "attachment");
<左尖括号
>直角支架
\反斜杠
“引号
/斜线
:冒号
|竖杆
?问号
*星号
空间

不幸的是,这是IE的一个局限

根据Microsoft的说法,如果在文件附件的文件名属性中使用下列字符,它们将被转换为下划线:

response.AddHeader("Content-Disposition", "attachment");
<左尖括号
>直角支架
\反斜杠
“引号
/斜线
:冒号
|竖杆
?   问号
*星号
空间

请参见

谢谢你!!UrlEncode与“#”配合使用效果很好。非常感谢!啊,.NET的
UrlEncode
对于空格字符可能不合适,但是:它将它编码为
+
,而不是
%20
,这对于路径组件不太合适。有点遗憾的是,在.NET中没有非表单URL编码方法,但您可以在编码后将
+
替换为
%20
来手动修复它。是的,Bobince,我也遇到过同样的问题,即空间“+”。然后手动更换。本想回应您之前的建议,但也收到了您的评论:)再次感谢Hanks Bobince!!UrlEncode与“#”配合使用效果很好。非常感谢!啊,.NET的
UrlEncode
对于空格字符可能不合适,但是:它将它编码为
+
,而不是
%20
,这对于路径组件不太合适。有点遗憾的是,在.NET中没有非表单URL编码方法,但您可以在编码后将
+
替换为
%20
来手动修复它。是的,Bobince,我也遇到过同样的问题,即空间“+”。然后手动更换。本想回应您之前的建议,但也收到了您的评论:)再次感谢