下载文件的编码问题

问题描述

小弟在做一个文件下载的功能时,出现了文件名乱码问题,请各位给分析下。我页面上采用的是UTF-81.界面采用的是UTF-8编码方式,界面简易代码:<%@ page contentType="text/html;charset=UTF-8"%><%@ taglib prefix="ww" uri="/webwork"%><html><head><title><%=str%></title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body><a href="#" onclick="javascript:window.open(encodeURI('/fileDownload/loadAction.do?fileName=D:/新建文本文档.txt'))">下载</a></body></html> 2.在Action中,我用前台传进来的fileName新建一个File  fileName = request.getParameter("fileName");File file = new File(fileName);if(!file.exists())throw new IOException("文件不存在!");OutputStream outputStream = null;FileInputStream fileIn = null;HttpServletResponse response = ServletActionContext.getResponse();try {response.setContentType("application;charset=UTF-8");response.setHeader("Content-Disposition", "attachment; filename=" + new String(file.getName().getBytes("GBK"),"ISO-8859-1"));outputStream = response.getOutputStream();fileIn = new FileInputStream(fileName);FileCopyUtils.copy(fileIn, outputStream);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{if(outputStream!=null)outputStream.close();if(fileIn!=null)fileIn.close();} 在response.setHeader的时候,我如果不把文件编码给转一下,就会产生乱码,乱码为【苞_嘽.txt】,对应【新建文本文档.txt】,我把文件名给转了下编码,下载就不是乱码了 求解释,多谢了。 备注:JSP编码为UTF-8,Java文件编码为UTF-8,JVM启动参数编码为GBK

解决方案

你界面编码为UTF-8,在action中response.setContentType("application;charset=UTF-8");这段代码只是设置文件内容的编码格式,而对文件名的编码没有设置,默认为ISO-8859-1,所以会产生乱码

时间: 2024-09-20 22:34:33

下载文件的编码问题的相关文章

二进制-html5下a标签,如何定义下载文件txt的编码方式

问题描述 html5下a标签,如何定义下载文件txt的编码方式 要用a标签的download属性,下载一个txt的文件,文件内容是js下的字符串,然后本人用blob装成二进制流,在用URL.createObjectURL生成href地址.然后赋给a标签.但是每次遇到字符串中有中文,就会出现txt文本编码自动变成utf-8,本人想要的是ansi格式的txt文件. <!doctype html><html lang=""en""><head

彻底解决中文名文件下载和下载文件内容乱码问题

解决|问题|下载|中文 之前,写过一个Download.jsp文件,可以解决下载文件乱码问题(诸如:DOC,XSL文件等等).后来发现,遇到中文名的文件的时候,文件下载将会报错~~~~今天,通过改写原Download.jsp文件已经彻底解决了这个问题~现在,把一整套的文件上传下载的方法给贴出来~~~以便大家借鉴!~!~!~!~!  作者:古埃及法老---------------------------------------------------------------------------

php做下载文件的实现代码及文件名中乱码解决方法

最近有人问我做下载文件的方法,对于php方法如下: 复制代码 代码如下: <?php header("Content-Type: application/force-download"); header("Content-Disposition: attachment; filename=ins.jpg"); readfile("imgs/test_Zoom.jpg"); ?> 第一行代码是强制下载: 第二行代码是给下载的内容指定一个

PHP 下载文件时自动添加bom头的方法实例

 这篇文章主要介绍了PHP 下载文件时自动添加bom头的方法实例,有需要的朋友可以参考一下 首先弄清楚,什么是bom头?在Windows下用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte order Mark). 不仅限于 记事本保存的文件,只要在文件的开口包含了EF BB BF 几个不可见的字符(十六进制应该是是xEFxBBxBF,用二进制编辑文件可见).这像是一个约定俗成的东西,当系统看到这玩意的时候

Servlet中的上传下载文件

一.文件上传 文件的上传也是基于表单来完成的,表单中的file元素可以自动生成一个文本框和一个按钮,文本框可以输入本地文件名或路径,点击按钮则可以打开一个文件选择框让用户选中本地文件.需要注意的是在文件上传时还必须设置表单的enctype属性,并将它的值设置为multipart/form-data. upload.jsp   <FORM METHOD="POST" ENCTYPE="multipart/form-data"    ACTION="Sm

php做下载文件的实现代码及文件名中乱码解决方法_php技巧

最近有人问我做下载文件的方法,对于php方法如下: 复制代码 代码如下: <?php header("Content-Type: application/force-download"); header("Content-Disposition: attachment; filename=ins.jpg"); readfile("imgs/test_Zoom.jpg"); ?> 第一行代码是强制下载: 第二行代码是给下载的内容指定一个

JS 文件本身编码转换 图文教程_javascript技巧

在百度.谷歌上一搜,大家都是说通过JAVA后台处理来解决编码问题,试问,这样能解决JS文件本身的编码问题吗? 之所以提出JS文件本身编码问题,是因为JS文件的编码不同,造成了中文显示为乱码. 通常,在Eclipse中建立一个JS文件(含有中文),在Eclipse的编辑器中看到的中文都很正常,但是显示在网页上就是乱码,而我的页面全部都是采用UTF-8编码进行编码的,为此,我想到了,这可能是JS文件本身编码问题造成的. 在Eclipse中,JS文件中的中文显示正常 在网页中,中文却显示为乱码 我想到

java 多线程-为什么使用Java多线程下载文件时下载后的文件和服务器端文件大小一模一样但是无法打开

问题描述 为什么使用Java多线程下载文件时下载后的文件和服务器端文件大小一模一样但是无法打开 为什么使用Java多线程下载文件时下载后的文件和服务器端文件大小一模一样但是无法打开?? package com.miuitust.mutilethread; import java.io.File; import java.io.InputStream; import java.io.RandomAccessFile; import java.net.HttpURLConnection; impor

使用HttpURLConnection下载文件时出现 java.io.FileNotFoundException彻底解决办法

使用HttpURLConnection下载文件时经常会出现 java.io.FileNotFoundException文件找不到异常,下面介绍下解决办法 首先设置tomcat对get数据的编码:conf/server.xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncodin