.net从服务器下载文件中文名乱码解决方案

从服务器下载文件中文名乱码解决方案,具体文字说明不多了,直接贴代码了,具体代码如下:

注意判断浏览器 IE需要将中文文件名编码格式转换,而firefox浏览器则不用,不然下载下来的中文文件名会乱码

 response.setHeader()下载中文文件名乱码问题

 首先展示我的解决问题的代码:

/span>

1 2 response.setHeader( "Content-Disposition" , "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8" ));

 1. HTTP消息头 

 (1)通用信息头

 即能用于请求消息中,也能用于响应信息中,但与被传输的实体内容没有关系的信息头,如Data,Pragma

 主要: Cache-Control , Connection , Data , Pragma , Trailer , Transfer-Encoding , Upgrade 

 (2)请求头 

 用于在请求消息中向服务器传递附加信息,主要包括客户机可以接受的数据类型,压缩方法,语言,以及客户计算机上保留的信息和发出该请求的超链接源地址等.

主要: Accept , Accept-Encoding , Accept-Language , Host , 

 (3)响应头 

 用于在响应消息中向客户端传递附加信息,包括服务程序的名称,要求客户端进行认证的方式,请求的资源已移动到新地址等. 

 主要: Location , Server , WWW-Authenticate(认证头) 

 (4)实体头

 用做实体内容的元信息,描述了实体内容的属性,包括实体信息的类型,长度,压缩方法,最后一次修改的时间和数据的有效期等. 

 主要: Content-Encoding , Content-Language , Content-Length , Content-Location , Content-Type

 (4)扩展头 

 主要:Refresh, Content-Disposition

 2. 几个主要头的作用

 (1)Content-Type的作用 

 该实体头的作用是让服务器告诉浏览器它发送的数据属于什么文件类型。 

例如:当Content-Type 的值设置为text/html和text/plain时,前者会让浏览器把接收到的实体内容以HTML格式解析,后者会让浏览器以普通文本解析. 

 (2)Content-Disposition 的作用  

当Content-Type 的类型为要下载的类型时 , 这个信息头会告诉浏览器这个文件的名字和类型。  

 在讲解这个内容时,张老师同时讲出了解决中文文件名乱码的解决方法,平常想的是使用getBytes() , 实际上应使用email的附件名编码方法对文件名进行编码,但IE不支持这种作法(其它浏览器支持) , 使用javax.mail.internet.*包的MimeUtility.encodeWord(“中文.txt”)的方法进行编码。 

 Content-Disposition扩展头的例子:

/span>

1 2 3 4 5 6

来源:九天之凤

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2015年10月9日
下一篇 2015年10月9日

相关推荐