想法,通过JSP页面查询要下载的文件,路径在ftp服务器上。不知道如何跳转,用response.sendRedirect文件名中文乱码,encode后虽然能下载,但是保存的文件名还是无法还原到正常的中文。谁有什么好办法?

解决方案 »

  1.   

    String url="test.jsp?name=乱码&pwd=1111"; 
    url=new String(url.getBytes("GBK"),"ISO8859_1"); 
    response.sendRedirect(url);
    在调用response.sendRedirect之前要先转换成ISO8859_1编码
      

  2.   

    场合:页面本身有中文的时候
    解决办法:servlet:resp.setContentType("text/html;charset=gbk");
    Jsp: <%@ page contentType="text/html;charset=gb2312"%>
    注意:一定要写在PrintWriter out = resp.getWriter();之前
    场合:解决get方式乱码问题:
    解决办法:修改server.xml URIEncoding="GBK"
    场合:解决post方式提交内容的乱码
    解决办法:request.setCharacterEncoding("GBK");
    注意:一定要写在存取第一个参数之前
    不要调用response.setCharacterEncoding("GBK");
    场合:<jsp:param name="user" value="<%=s%>"/>,url地址包含中文参数
    解决办法:<%request.setCharacterEncoding("GBK");%>
      

  3.   


    response.setContentType("application/octet-stream;charset=UTF-8");
    String filename = new String(filename.getBytes("GB2312"), "ISO-8859-1");
    response.setHeader("Content-Disposition","inline; filename="+filename);
      

  4.   

    其实是要redirect到ftp://test:[email protected]/中文文件名.rar这样的路径试过了,重新编码或不编码都找不到文件,只有用URLEncoder.encode才能正常找到文件,当然同时文件名也变成一堆%
      

  5.   

    当然,由于转向地址在不同主机上,因此没办法用RequestDispatcher.forward()