关于java上传文件到服务器文件名录乱码

解决方案 »

  1.   

    response.addHeader("Content-Disposition","attachment;   filename=\""+ new String(("端口资源情况统计报表").getBytes(),"iso8859-1")+  "\""); 这样写在本地可以正常显示中文文件名,但在linux服务器上却不能正常显示。其实在windows下面当getBytes()方法里面不写编码方式的时候默认应该是"UTF-8",       改为response.addHeader("Content-Disposition","attachment;   filename=\""+ new String(("端口资源情况统计报表").getBytes("GB2312"),"iso8859-1")+  "\"") 时,本地和linux服务器上都能正常显示下载文件的文件名了。注意:在把文件名发送给服务器的时候一定不能是中文,所以要把中文转成iso8859-1或其他非中文的形式。或者是 在上传前进行 文件名装 ASCII码  在服务器在用 ASCII码装中文
      

  2.   

    如果你的服务器是tomcat,可以在server.xml文件中修改<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>改为<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf-8"/>
      

  3.   

    java里面的乱码问题还是挺好解决的你慢慢试呗,总共就哪几种编码,试也可以试出来的。
      

  4.   

    过滤器啊过滤器怎么碰到编码问题就用字符串转码呢。
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) arg0;
    HttpServletResponse response = (HttpServletResponse) arg1; request.setCharacterEncoding(encoding);
    response.setCharacterEncoding(encoding); arg2.doFilter(arg0, arg1);
    }
    就这么几句超简单的代码就可以搞定的问题干嘛要搞得那么复杂
      

  5.   

    这个中文文件名乱码的问题很多项目都会遇到,一般采取的方法就是绕道而行,获取前缀转换成其他的名字,避免使用中文,web程序对中文支持不是很好。建议采用英文名,或者采用转换成特殊定义的名字