当前位置:首页 > 开发 > 编程语言 > 编码 > 正文

下载文件设置header的filename要用ISO8859-1编码的原因

发表于: 2014-08-18   作者:商人shang   来源:转载   浏览:
摘要: 很多情况下,我们在写程序的时候都会把代码设置为UTF-8的编码,可以在下载文件设置filename的时候却有违常理,竟然设置编码格式为ISO8859-1,代码如下(如是英文的话就不需要这样处理了): response.setHeader("Content-disposition", "attachment; filename=" + new String

很多情况下,我们在写程序的时候都会把代码设置为UTF-8的编码,可以在下载文件设置filename的时候却有违常理,竟然设置编码格式为ISO8859-1,代码如下(如是英文的话就不需要这样处理了):

 response.setHeader("Content-disposition", "attachment; filename=" + new String("中文文件名".getBytes("utf-8"), "ISO8859-1"));

 提取出来最核心的一点,filename=new String("中文文件名".getBytes("utf-8"), "ISO8859-1");

先说为什么使用 ISO8859-1 编码,这个主要是由于http协议,http header头要求其内容必须为iso8859-1编码,所以我们最终要把其编码为 ISO8859-1 编码的字符串;

但是前面为什么不直接使用 "中文文件名".getBytes("ISO8859-1"); 这样的代码呢?因为ISO8859-1编码的编码表中,根本就没有包含汉字字符,当然也就无法通过"中文文件名".getBytes("ISO8859-1");来得到正确的“中文文件名”在ISO8859-1中的编码值了,所以再通过new String()来还原就无从谈起了。 所以先通过 "中文文件名".getBytes("utf-8") 获取其 byte[] 字节,让其按照字节来编码,即在使用 new String("中文文件名".getBytes("utf-8"), "ISO8859-1") 将其重新组成一个字符串,传送给浏览器。

 

参考:http://jiapumin.iteye.com/blog/1006144

下载文件设置header的filename要用ISO8859-1编码的原因

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
文件下载时常会出现如下问题: response.setHeader("Content-disposition","attachment; filename="
1 "General"--"Content Types"--"Text"--"JSP",将ISO8859-1修改为utf-8,“Update"确定 2 快捷键提
如果你在使用某个editor进行开发的话,文件编码就由改editor解决即可 Eclipse中也有这个功能,帮你
最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法--修改null 1、 window==>>pr
一次设置,所有页面编码立即更改,不必再手动一个一个设置编码。 步骤: 1.windowàpreferencesàcont
web.xml文件中的 encoding="GBK",在eclipse里面中文注释不显示,改了下eclipse的设置,具体操作如下
eclipse的: window->preferences->General->ContentType 的右边窗口,选择text 然后把需
一、设置jsp文件本身的编码 eclipse 的window-->prefrences -->general -->content type中
一、设置jsp文件本身的编码 eclipse 的window-->prefrences -->general -->content type中
先讲编码: ////读取 FileInputStream fr = new FileInputStream(path); InputStreamReader is = new
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号