`

编码之上传下载

阅读更多
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
 
分享到:
评论
2 楼 beyondsanli 2008-07-18  


import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;

public class TestURLEncoder {

/**
* @param args
* @throws UnsupportedEncodingException
*/
public static void main(String[] args) throws UnsupportedEncodingException {
// TODO 自动生成方法存根


String encodeStr="%CC%E1%BD%BB";
String decodeStr=URLDecoder.decode(encodeStr,"GBK"); System.out.println(decodeStr);

String rawStr="简单测试";
System.out.println(URLEncoder.encode(rawStr,"GBK"));



}

}
1 楼 beyondsanli 2008-03-06  
如果用weblogic,在weblogic.xml中加:
- <charset-params>
- <input-charset>
<resource-path>/*</resource-path>
<java-charset-name>GBK</java-charset-name>
</input-charset>
- <charset-mapping>
<iana-charset-name>GB2312</iana-charset-name>
<java-charset-name>GBK</java-charset-name>
</charset-mapping>
</charset-params>
Top

相关推荐

    字符编码查询之星

    《字符编码查询之星》是一款专为处理字符编码问题设计的实用工具,主要功能在于实现Unicode、UTF-8、GBK和BIG5编码之间的相互转换。在信息化时代,字符编码的兼容性和准确性是数据交换的重要环节,这款软件的出现,...

    GB2312编码表、字库下载以及移植教程.zip

    GB2312编码表是中文字符编码标准之一,全称为《信息交换用汉字编码字符集·基本集》,由中华人民共和国国家标准局于1980年发布,是中国大陆早期广泛使用的汉字编码系统。该编码标准定义了6763个常用汉字和682个非...

    帧编码和场编码

    相比之下,场编码主要针对隔行扫描的视频帧。在这种编码方式中,顶部场和底部场被分开处理,每个场作为一个单独的图像单元进行编码,采用场运动补偿。这种方法考虑了电视广播中常见的运动特性,特别是在快速移动的...

    香农编码之C++实现

    它的核心思想是根据字符出现的频率来分配编码,使得高频率的字符对应较短的编码,低频率的字符对应较长的编码,从而在总体上达到平均码长最优化,接近信息熵,进而实现无损数据压缩。这里我们将深入探讨香农编码的...

    文字编码转换工具

    1. 解决乱码问题:当从互联网下载或接收的文本文件出现乱码时,可以尝试用不同的编码打开,找出正确的编码并转换。 2. 跨平台数据交换:在Windows和Unix/Linux之间交换文本文件时,由于编码的不同,可能需要转换。 3...

    GB2312简体中文编码表

    ### GB2312简体中文编码表知识点详解 #### 一、GB2312简介 ...综上所述,GB2312作为中国最早期的汉字编码标准之一,虽然已经逐渐被新的编码标准所取代,但了解它对于理解中文编码的历史和发展仍然具有重要意义。

    PEP8Python 编码规范

    这实际上是有关代码国际化和本地化的问题,不过,原文提到的“将Python的英文编码变成中文的数据规范”并不准确,因为PEP8本身并不直接涉及语言的转换,而是关于编码风格的约定。不过,如果是要编写中文的注释,应当...

    天堂游戏的各种编码器

    在IT领域,编码器是处理数据编码和解码的关键工具,尤其在游戏开发和模拟中起着至关重要的作用。"天堂游戏的各种编码器"这个...无论你是游戏开发者还是普通玩家,深入学习和分享编码器知识都将对你的游戏之旅大有裨益。

    现代编码理论 经典教材

    - **信道编码定理**:Shannon提出的理论,表明只要信息传输速率不超过信道容量,理论上总有一种编码方式可以使错误概率无限接近于零。 - **硬判决与软判决**: - 硬判决:接收端仅根据接收到的信号值做出决策,不...

    三年级上册数学数字编码之身份证PPT课件.pptx

    《三年级上册数学数字编码之身份证》这节课件主要探讨了数字编码在身份证中的应用,旨在帮助学生理解数字编码的基本概念及其在现实生活中的重要性。身份证号码是一个典型的数字编码实例,它包含了丰富的个人信息。 ...

    网络编码的开篇之作

    ### 网络编码的开篇之作:网络信息流 #### 概述 本文献《网络信息流》是由Rudolf Ahlswede、Ning Cai、Shuo-Yen Robert Li以及Raymond W. Yeung共同发表在IEEE Transactions on Information Theory上的一篇文章。...

    短信UCS编码或解码工具

    4. **ASCII**:ASCII编码是最简单的字符编码之一,只包含了128个基本的拉丁字符和一些控制字符,主要用于英文和其他使用拉丁字母的语言。 5. **UTF-8**:UTF-8是Unicode的变体,它可以高效地表示各种语言的字符,...

    机械行业编码 参照

    在机械行业中,物料编码是一...综上所述,物料编码在机械行业的应用涉及到多个方面,不仅关乎物料的标识,还直接影响到企业的运营效率和数据准确性。合理构建和维护物料编码系统,对于提升企业的管理水平具有深远意义。

    哈夫曼编码,对任意序列进行编码

    在哈夫曼编码中,出现频率较高的字符会被赋予较短的编码,而出现频率较低的字符则被赋予较长的编码,从而在整体上提高数据传输或存储的效率。 首先,我们需要理解几个关键概念: 1. **频率**:每个字符在消息序列中...

    网络安全之安全编码.docx

    安全编码 安全编码(secure coding)含义: 网络安全之安全编码全文共2页,当前为第1页。安全编码旨在避免容易预防的编码缺陷,这些缺陷会造成安全风险。对软件漏洞的研究表明,大量的漏洞利用都源于—小群常见的...

    Fano_Huffman_Shanno_霍夫曼编码_费诺编码_香农编码_

    香农编码是由信息论之父克劳德·香农提出的,它是一种非前缀编码,主要应用于无损数据压缩。香农编码的目标是将信源中的每个符号用等长的二进制码字表示,然后通过引入冗余信息来区分不同的符号,从而达到压缩数据...

    代数与编码

    万哲先教授通过严谨的数学推导、生动的实际案例,使得复杂深奥的理论变得易于理解,激发了读者对数学和编码的兴趣,同时也为他们在科研道路上提供了宝贵的指引。无论是初学者还是经验丰富的研究人员,都能从这部经典...

    游程编码 JAVA 代码

    当遇到不同像素值时,将上一个像素值及其个数作为一对数据输出。在处理二值图像时,只需考虑两种可能的像素值,通常为0(黑色)和1(白色)。 哈夫曼编码(Huffman Coding)是一种基于频率的变长编码方法,用于...

    lz编码 信息论 编码理论

    LZ编码有多种变体,如LZ77、LZ78和LZW(Lempel-Ziv-Welch),它们在具体实现上有所不同,但核心原理是相似的。 在LZ编码中,关键的概念是滑动窗口和字典。滑动窗口是在原始数据流中向前移动的一段固定大小的数据...

Global site tag (gtag.js) - Google Analytics