首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

JSP不能打开中文文件名的Excel文件解决思路

2012-09-20 
JSP不能打开中文文件名的Excel文件在页面中用超链接直接在IE中打开Excel文件,如果文件名是英文的一切正常,

JSP不能打开中文文件名的Excel文件
在页面中用超链接直接在IE中打开Excel文件,如果文件名是英文的一切正常,但如果文件名是中文的,就会出现404、找不到指定文件。
虽然说文件名最好不用中文,但如果有这种需求也没得办法。

排除的解决方案:
一:不能修改Tomcat的server.xml的编码:URI="utf-8";
二:设置浏览器“总是以utf-8传递URL”。


[解决办法]
转化一下文件名字就可以了

Java code
String changFileName = new String(fileName.getBytes("UTF-8"),"ISO8859_1")
[解决办法]
可以试一下楼上的方法,关于编码转换的,问题很多,有时服务器编码也会有影响

多试几种吧
[解决办法]
将文件的路径,文件名,信息保存一份在数据库,然后重新以英文命名文件名
页面访问的时候,访问改变文件名的新的文件
[解决办法]
增加一个过滤器:

Java code
import java.io.IOException;import java.net.URLDecoder;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;public class UrlFilter implements Filter {    public final static String DEFAULT_URI_ENCODE = "UTF-8";        private FilterConfig config = null;    private String encode = null;    public void init(FilterConfig config) throws ServletException {        this.config = config;        this.encode = config.getInitParameter("DEFAULT_URI_ENCODE");        if(this.encode == null) {            this.encode = DEFAULT_URI_ENCODE;        }    }    public void doFilter(ServletRequest req, ServletResponse res,            FilterChain chain) throws IOException, ServletException {        HttpServletRequest request = (HttpServletRequest) req;        String uri = request.getRequestURI();        String ch = URLDecoder.decode(uri, encode);        if(uri.equals(ch)) {            chain.doFilter(req, res);            return;        }        ch = ch.substring(request.getContextPath().length());        config.getServletContext().getRequestDispatcher(ch).forward(req, res);    }        public void destroy() {        config = null;    }}
[解决办法]
探讨
如果只有 excel 的话,可以把 url-pattern 改成 *.xls

[解决办法]
我不会 我只来踩踩
[解决办法]
顶下!
[解决办法]
LZ这样搞会降低服务器性能的,要是有许多客户端同时请求打开某一个文件,不知道有什么结果.建议LZ别这样做,还不如搞个下载的功能让用户下载后在客户端打开(尽管你这个方法看起来像是在下载文件)
[解决办法]
你说这个不好实现,因为你只是简单的使用了链接,没有办法设置弹出框的文件名,如果自己写读写文件代码的话可以设置文件名的编码就可以解决,昨天我刚弄好了个解决中文文件名下载的,但是我是自己采用的流的读写方式弄的
[解决办法]
探讨
引用:
如果只有 excel 的话,可以把 url-pattern 改成 *.xls

你那个过滤器只能过滤application/x-www-form-urlencoded的数据,要是表单提交的是文件怎么办??

[解决办法]
IE下 
 1. String browser = request.getHeader("user-agent");
2. Pattern pattern = Pattern.compile(".* MSIE.*?;.*");
3. Matcher matcherAccount = pattern.matcher(browser);
4. if(matcherAccount.matches()){
5. response.setHeader("Content-Disposition","attachment;filename=\""+ [color=red]StringUtils.replace[/color](java.net.URLEncoder.encode(downloadname),"+","%20") + "\"");
6. }

热点排行