java 文件下载文件名称乱码

乱码的原因是什么?
每个浏览器的编码不一样,火狐采用的是base64.ie和谷歌采用的是url编码

所以我们在设置响应头的时候
Content-Type getServletContext().getMineType(filename);
Content-Disposition accachment;filename=编码后的filename

url编码
name = URLEncoder.encode(filename, "UTF-8");

base64编码
/**

  • 传入文件的名称,进行Base64编码
  • @param fileName
  • @return
    */
    public String base64EncodeFileName(String fileName) {
    BASE64Encoder base64Encoder = new BASE64Encoder();
    try {
    return "=?UTF-8?B?"
    • new String(base64Encoder.encode(fileName
      .getBytes("UTF-8"))) + "?=";
      } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
      throw new RuntimeException(e);
      }
      }

原文地址:http://blog.51cto.com/13579086/2073595

时间: 2024-10-09 14:33:23

java 文件下载文件名称乱码的相关文章

asp.net 文件下载 文件名称乱码 处理~~

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO; using ElementLibrary.BLL; using ElementLibrary.MODEL; using System.Text; /*  * LiuH  * Descr:下载处理DownLoadFile.ashx  * Addtime:2014/8/26  * LastModif

swfupload组件后台获取中文文件名称乱码的问题解决

   问题描写叙述:用swfupload上传文件,含有中文名称的文件上传会报错,我用的是获取FileItem对象,用FileItem对象的getName()方法获取文件名会乱码,试着用request.setCharacterEncoding("UTF-8")及fileName= new String(fileName.getBytes("iso-8859-1";),"UTF-8"); 都不能够,用FileItem对象.getString(&quo

java文件下载的文件名乱码

// //下载文件,并处理文件名乱码 public void downloadFile(HttpServletRequest request,HttpServletResponse response){    String path = request.getSession().getServletContext().getRealPath("/upload/文档1.doc");     // path是根据日志路径和文件名拼接出来的      File file = new File

linux中删除文件名称乱码

在最近的操作中发现一些上传的文件有乱码,更改几次都无法正常转换到中文.下面给出正确的解决方案: 使用 ls -i 或者 ls -inum 查找出文件id号(红色字体) [[email protected] home]# ls -i260615 epel-release-latest-6.noarch.rpm 273780 test.txt[[email protected] home]# ls -inum273780 test.txt, 260615 epel-release-latest-6.

Java web中不同浏览器间导出Excel文件名称乱码问题解决方案

问题描述: 对于不同浏览器存在对中文编码格式问题,从而在导出Excel文件时,中文文件名出现乱码的情况,即在程序中给要导出的文件指定一个中文名字时,在浏览器上出现的下载框中的文件名出现了乱码,解决如下: 解决方案: [java] view plain copy Date dt=new Date();//如果不需要格式,可直接用dt,dt就是当前系统时间 DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//设置显示格

java压缩文件中文名乱码问题

import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; 改为 import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipOutputStream; ant包里提供ZipOutputStream类的setEncoding("gbk")方法. zos.setEncoding("gbk"); ant包下载(点击进

jxl导出EXCEL文件名称乱码

开始导出excle时名称是乱码的,加上下面的就可以了, String FileNam="xx医院_xxxx_xx_xx.xls"; res.setCharacterEncoding("UTF-8"); res.setContentType("application/octet-stream"); String fileName_1 = new String(FileName.getBytes("UTF-8"), "i

java 读取文件中文乱码问题

很少写java io的代码,今天整了一个发现 本地调试好好的,放到jmeter里就打印乱码.一番折腾,终于搞定~直接上代码: List<Order> orderList = new ArrayList<Order>(); InputStream fis = null; InputStreamReader isr = null; BufferedReader br = null; try { String jsonStr = ""; //fis = new Fil

Java修改文件名称

import java.io.File;import java.io.IOException; public class Rename { public static void main(String[] args) throws IOException  {   File oldFile = new File("d:/1.Out");  if(!oldFile.exists())  {   oldFile.createNewFile();  }  System.out.println