`

编码之上传下载

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

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

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

    现代编码理论 经典教材

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

    网络编码的开篇之作

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

    霍夫曼编码霍夫曼编码霍夫曼编码

    1. 霍夫曼编码构造程序是明确的,但编出的码不是唯一的,其原因之一是两个概率分配码字“0”和“1”是任意选择的(大概率为“0”,小概率为“1”,或者反之)。第二原因是在排序过程中两个概率相等,谁前谁后也是...

    编码器编码器编码器编码器

    根据给定的信息,我们可以提取和总结出...综上所述,OIH系列编码器代表了多摩川精机在编码器技术方面的顶尖水平,通过不断的技术创新和优化,实现了在体积、精度、成本等方面的平衡,从而满足不同行业的多样化需求。

    机械行业编码 参照

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

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

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

    短信UCS编码或解码工具

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

    网络安全之安全编码.docx

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

    LAME3.92经典MP3编码器(ACM版)

    LAME3.92 ACM版的独特之处在于,它将LAME编码器与ACM接口结合,使得用户无需复杂的命令行操作,就能在Windows系统下直接通过ACM驱动进行MP3编码,大大简化了操作流程。对于Win7用户来说,这是一个特别方便的版本,...

    汉字编码表汉字编码表

    GB2312是中国国家标准汉字编码字符集,全称为《信息交换用汉字编码字符集·基本集》,自1981年发布以来,一直是中国大陆地区广泛使用的汉字编码方案之一。它由中华人民共和国国家标准局于1981年5月1日发布,并于同年...

Global site tag (gtag.js) - Google Analytics