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上的一篇文章。...
4. **ASCII**:ASCII编码是最简单的字符编码之一,只包含了128个基本的拉丁字符和一些控制字符,主要用于英文和其他使用拉丁字母的语言。 5. **UTF-8**:UTF-8是Unicode的变体,它可以高效地表示各种语言的字符,...
在机械行业中,物料编码是一...综上所述,物料编码在机械行业的应用涉及到多个方面,不仅关乎物料的标识,还直接影响到企业的运营效率和数据准确性。合理构建和维护物料编码系统,对于提升企业的管理水平具有深远意义。
在哈夫曼编码中,出现频率较高的字符会被赋予较短的编码,而出现频率较低的字符则被赋予较长的编码,从而在整体上提高数据传输或存储的效率。 首先,我们需要理解几个关键概念: 1. **频率**:每个字符在消息序列中...
安全编码 安全编码(secure coding)含义: 网络安全之安全编码全文共2页,当前为第1页。安全编码旨在避免容易预防的编码缺陷,这些缺陷会造成安全风险。对软件漏洞的研究表明,大量的漏洞利用都源于—小群常见的...
香农编码是由信息论之父克劳德·香农提出的,它是一种非前缀编码,主要应用于无损数据压缩。香农编码的目标是将信源中的每个符号用等长的二进制码字表示,然后通过引入冗余信息来区分不同的符号,从而达到压缩数据...
万哲先教授通过严谨的数学推导、生动的实际案例,使得复杂深奥的理论变得易于理解,激发了读者对数学和编码的兴趣,同时也为他们在科研道路上提供了宝贵的指引。无论是初学者还是经验丰富的研究人员,都能从这部经典...
当遇到不同像素值时,将上一个像素值及其个数作为一对数据输出。在处理二值图像时,只需考虑两种可能的像素值,通常为0(黑色)和1(白色)。 哈夫曼编码(Huffman Coding)是一种基于频率的变长编码方法,用于...
LZ编码有多种变体,如LZ77、LZ78和LZW(Lempel-Ziv-Welch),它们在具体实现上有所不同,但核心原理是相似的。 在LZ编码中,关键的概念是滑动窗口和字典。滑动窗口是在原始数据流中向前移动的一段固定大小的数据...