.NET Response.AddHeader("content-disposition", GenerateName) 生成word时文档名乱码

来源:互联网 发布:ubuntu fedora 比较 编辑:程序博客网 时间:2024/05/21 16:29

最近在做一个小项目时需要在web上填些内容后自动生成word,在生成word时一切都很正常就是生成的文档名为乱码,郁闷了一晚上最终终于解决。

 

//这是基本的语句

Response.AddHeader("content-disposition", "attachment; filename=filename.docx");

//假设filename是一个textbox的值docname.Text

string GenerateName = "attachment; filename=" + docname.Text + ".docx";

Response.AddHeader("content-disposition", GenerateName);

解决这个问题有两个办法:

1、加上Response.HeaderEncoding = System.Text.Encoding.GetEncoding("GB2312");

完整代码为:

string GenerateName = "attachment; filename=" + docname.Text + ".docx";

Response.HeaderEncoding = System.Text.Encoding.GetEncoding("GB2312");

Response.AddHeader("content-disposition", GenerateName);

这个可以解决乱码问题,现在的疑惑是在vs下调试还是乱码,但部署到IIS就正常了。

 

2、以URL形式对文档名编码(这个方法好)

string GenerateName = "attachment; filename=" + Server.UrlPathEncode(docname.Text) + ".docx";

Response.AddHeader("content-disposition", GenerateName);