zoukankan      html  css  js  c++  java
  • 下载文件设置header的filename要用ISO8859-1编码的原因

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

    Java代码  收藏代码
    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

  • 相关阅读:
    spring3 上配置quartz 任务调度
    读取.properties配置信息
    mybatis 返回值
    div根据鼠标的移入移除显示隐藏
    jquery日期控件+时分秒
    mysql 插入多条记录,重复值不插入
    Hadoop中Writable类
    Hadoop中WritableComparable 和 comparator
    Hadoop序列化
    Hadoop压缩之MapReduce中使用压缩
  • 原文地址:https://www.cnblogs.com/renjiaqi/p/11258042.html
Copyright © 2011-2022 走看看