昨天发了个贴,没人响应,只好再发。
先简单描述下问题:
1.中文名称的文件用360下载器无法下载(没试过迅雷,估计也不行),但是用web保存的方式又能够下载。
2.英文名称的文件下载一切正常。
3.在360下载器的下载栏中中文名显示正常,但是tomcat信息栏总却显示中文文件名为乱码,
如(E:\project\1286619949453?????????.txt (系统找不到指定的文件。)])部分代码如下,请大侠看看:
Action:
//文件下载
public InputStream getDownload()throws Exception {
return new FileInputStream(url+"\\"+file);
}
/** 提供转换编码后的供下载用的文件名 */ public String getDownloadFileName() { String downFileName =file; try { downFileName = new String(downFileName.getBytes(), "ISO8859-1"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return downFileName; }
public String execute() throws Exception {
//file = new String(file.getBytes("ISO8859-1"),"UTF-8");//中文下载
return "downSuccess"; }
}struts.xml
<action name="download" class="MessageAction">
<result name="downSuccess" type="stream">
<param name="contentType">application/OCTET-STREAM</param>
<param name="inputName">download</param>
<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
<param name="bufferSize">4096</param>
</result>
</action>jsp页面:
<td height="20" align="center" bgcolor="#FFFFFF">附件下载:</td>
<td bgcolor="#FFFFFF"><s:if test="sysAnnounce.accessoryURL!=null"></s:if>
<c:forTokens var="str" items="${sysAnnounce.accessoryURL}" delims=";" varStatus="status">
<c:out value="${str}"/><a href="download.action?file=${str}"> 点击下载</a>
<br>
</c:forTokens>
</td> web.xml:
<!-- 解决中文字符乱码 -->
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
先简单描述下问题:
1.中文名称的文件用360下载器无法下载(没试过迅雷,估计也不行),但是用web保存的方式又能够下载。
2.英文名称的文件下载一切正常。
3.在360下载器的下载栏中中文名显示正常,但是tomcat信息栏总却显示中文文件名为乱码,
如(E:\project\1286619949453?????????.txt (系统找不到指定的文件。)])部分代码如下,请大侠看看:
Action:
//文件下载
public InputStream getDownload()throws Exception {
return new FileInputStream(url+"\\"+file);
}
/** 提供转换编码后的供下载用的文件名 */ public String getDownloadFileName() { String downFileName =file; try { downFileName = new String(downFileName.getBytes(), "ISO8859-1"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return downFileName; }
public String execute() throws Exception {
//file = new String(file.getBytes("ISO8859-1"),"UTF-8");//中文下载
return "downSuccess"; }
}struts.xml
<action name="download" class="MessageAction">
<result name="downSuccess" type="stream">
<param name="contentType">application/OCTET-STREAM</param>
<param name="inputName">download</param>
<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
<param name="bufferSize">4096</param>
</result>
</action>jsp页面:
<td height="20" align="center" bgcolor="#FFFFFF">附件下载:</td>
<td bgcolor="#FFFFFF"><s:if test="sysAnnounce.accessoryURL!=null"></s:if>
<c:forTokens var="str" items="${sysAnnounce.accessoryURL}" delims=";" varStatus="status">
<c:out value="${str}"/><a href="download.action?file=${str}"> 点击下载</a>
<br>
</c:forTokens>
</td> web.xml:
<!-- 解决中文字符乱码 -->
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
解决方案 »
- 急!怎样获取HttpURLConnection服务器回复Connection: close的数据呢?
- 一个不太理解的设计
- 可否把一个.java文件编译成exe,并且能完全脱离JVM执行,也就是这个exe可以放到没有JRE的机器上执行?
- 朋友帮帮忙,能解决问题者必给加分
- java连接sql-server编译运行没有问题.打过包之后运行就出错
- 如何给JTable中的JCheckBox列添加Listener
- 函数问题,请教
- 在java中怎么把数据库中的数据导出成excel形式的啊?
- 谁有struts的成功例子,可以分享一下?
- 紧急求援!编译能通过,但就不能执行!各位大大有什么高招??
- 求一个能自动登录csdn论坛的httpClient代码,不懂,大侠多指教!
- 怎么用Java监听键盘实现Ctrl+字母的快捷键
package com.hotmail.shaiberni.filter;import javax.servlet.*;
import java.io.IOException;
/**
* 用于设置 HTTP 请求字符编码的过滤器,通过过滤器参数encoding指明使用何种字符编码,用于处理Html Form请求参数的中文问题
*/public class CharacterEncodingFilter implements Filter
{
protected FilterConfig filterConfig = null;
protected String encoding = "gbk";
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
{
if(encoding != null)
servletRequest.setCharacterEncoding(encoding);
filterChain.doFilter(servletRequest, servletResponse);
}
public void destroy()
{
filterConfig = null;
encoding = null;
}
public void init(FilterConfig filterConfig) throws ServletException
{
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
}
}
<filter>
<display-name>CharacterEncodingFilter</display-name>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>com.hotmail.shaiberni.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
downFileName = java.net.URLEncoder.encode(downFileName,"URF-8"));