public void downLoadFile(File f,String filename,HttpServletResponse response) throws IOException
{
BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
byte[] buf = new byte[1024]; int len = 0;
response.reset();
response.setContentType("
application/x-msdownload;charset=gb2312");
response.setHeader("Content-Disposition", "attachment; filename="
+filename);
// 设置响应头和下载保存的文件名
OutputStream out = response.getOutputStream();
while ((len = br.read(buf)) > 0)
out.write(buf, 0, len);
br.close();
out.close();
}
分析如下:
1:获取字节流有很多方式
这里是获取指定固定文件的字节流
BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
也可以放在 字符串中总之,最终要解析成
字节喽!
outpage.write(buffer.toString().
getBytes());
下面是一个jsp导出excel的案例代码
response.reset();
response.setContentType("
application/excel;charset=UTF8");
OutputStream outpage = response.getOutputStream();
response.setHeader("Content-Disposition", "attachment; filename="+downFilename+".xls");
// System.out.println(buffer.toString());
outpage.write(buffer.toString().getBytes());
outpage.flush();
outpage.close();
这里着重想分析的是URLEncoder.encode的用法
String downFilename = java.net.URLEncoder.encode(fileName,"UTF-8");
自己理解的一塌糊涂:
日日日日日日日日日日日日日日日日
http://www.chedong.com/tech/unicode_java.html分析如下:
Response Header 的时候,对header的长度限制在150字节左右。而一个汉字编码成UTF-8是9个字节,如果filename过长比如17个字17*8=153就会截取filename
String fileName = URLEncoder.encode(atta.getFileName(), "UTF-8");
/*
* see http://support.microsoft.com/default.aspx?kbid=816868
*/
if (fileName.length() > 150) {//这点网友提供的好像不正确我感觉!
//其实我错了,encode过后是对应bytes
String guessCharset = xxxx /*根据request的locale 得出可能的编码,中文操作系统通常是gb2312*/
fileName = new String(atta.getFileName().getBytes(guessCharset), "ISO8859-1");
}
附加:Connection:keep-alive
分享到:
相关推荐
《字符编码查询之星》是一款专为处理字符编码问题设计的实用工具,主要功能在于实现Unicode、UTF-8、GBK和BIG5编码之间的相互转换。在信息化时代,字符编码的兼容性和准确性是数据交换的重要环节,这款软件的出现,...
GB2312编码表是中文字符编码标准之一,全称为《信息交换用汉字编码字符集·基本集》,由中华人民共和国国家标准局于1980年发布,是中国大陆早期广泛使用的汉字编码系统。该编码标准定义了6763个常用汉字和682个非...
相比之下,场编码主要针对隔行扫描的视频帧。在这种编码方式中,顶部场和底部场被分开处理,每个场作为一个单独的图像单元进行编码,采用场运动补偿。这种方法考虑了电视广播中常见的运动特性,特别是在快速移动的...
它的核心思想是根据字符出现的频率来分配编码,使得高频率的字符对应较短的编码,低频率的字符对应较长的编码,从而在总体上达到平均码长最优化,接近信息熵,进而实现无损数据压缩。这里我们将深入探讨香农编码的...
1. 解决乱码问题:当从互联网下载或接收的文本文件出现乱码时,可以尝试用不同的编码打开,找出正确的编码并转换。 2. 跨平台数据交换:在Windows和Unix/Linux之间交换文本文件时,由于编码的不同,可能需要转换。 3...
### GB2312简体中文编码表知识点详解 #### 一、GB2312简介 ...综上所述,GB2312作为中国最早期的汉字编码标准之一,虽然已经逐渐被新的编码标准所取代,但了解它对于理解中文编码的历史和发展仍然具有重要意义。
这实际上是有关代码国际化和本地化的问题,不过,原文提到的“将Python的英文编码变成中文的数据规范”并不准确,因为PEP8本身并不直接涉及语言的转换,而是关于编码风格的约定。不过,如果是要编写中文的注释,应当...
《三年级上册数学数字编码之身份证》这节课件便承担了这样的教学使命,通过分析身份证号码的构成,让学生们在掌握数字编码知识的同时,体会到其在现实生活中的应用价值。 身份证号码,作为我们每个人独一无二的数字...
在IT领域,编码器是处理数据编码和解码的关键工具,尤其在游戏开发和模拟中起着至关重要的作用。"天堂游戏的各种编码器"这个...无论你是游戏开发者还是普通玩家,深入学习和分享编码器知识都将对你的游戏之旅大有裨益。
- **信道编码定理**:Shannon提出的理论,表明只要信息传输速率不超过信道容量,理论上总有一种编码方式可以使错误概率无限接近于零。 - **硬判决与软判决**: - 硬判决:接收端仅根据接收到的信号值做出决策,不...
### 网络编码的开篇之作:网络信息流 #### 概述 本文献《网络信息流》是由Rudolf Ahlswede、Ning Cai、Shuo-Yen Robert Li以及Raymond W. Yeung共同发表在IEEE Transactions on Information Theory上的一篇文章。...
稀疏自动编码器是在标准自编码器基础上增加了稀疏性的约束。其目标是让隐藏层的激活值尽可能少,即大多数神经元的激活值接近零,而只有少数神经元的激活值较高。这样做的好处是可以促使模型学习到更高效且更具区分性...
哈夫曼树通过二叉树结构实现了数据的有效编码,而三元哈夫曼树则进一步优化了这一过程,尽管它在实现上需要更多的计算资源。通过深入理解这些数据结构和编码方法,我们可以更好地处理大数据环境下的压缩需求,优化...
在机械行业中,物料编码是一...综上所述,物料编码在机械行业的应用涉及到多个方面,不仅关乎物料的标识,还直接影响到企业的运营效率和数据准确性。合理构建和维护物料编码系统,对于提升企业的管理水平具有深远意义。
在哈夫曼编码中,出现频率较高的字符会被赋予较短的编码,而出现频率较低的字符则被赋予较长的编码,从而在整体上提高数据传输或存储的效率。 首先,我们需要理解几个关键概念: 1. **频率**:每个字符在消息序列中...
安全编码 安全编码(secure coding)含义: 网络安全之安全编码全文共2页,当前为第1页。安全编码旨在避免容易预防的编码缺陷,这些缺陷会造成安全风险。对软件漏洞的研究表明,大量的漏洞利用都源于—小群常见的...
4. **ASCII**:ASCII编码是最简单的字符编码之一,只包含了128个基本的拉丁字符和一些控制字符,主要用于英文和其他使用拉丁字母的语言。 5. **UTF-8**:UTF-8是Unicode的变体,它可以高效地表示各种语言的字符,...
首先,ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是最基础的字符编码之一,它使用7位二进制数来表示128个不同的字符,包括英文字符、数字、标点符号和一些控制字符。...
在计算机上进行视频编辑时,经常会遇到需要特定编码器的情况,因为不同的编码器对应不同的视频格式和编码标准。DX50编码器是这类需求中的一种,它在某些视频编辑软件中是不可或缺的组件。 DX50编码器的名称来源于...