tomcat+struts,一个论坛中,下载附件时如果附件名是中文,下载时就有编码错误。
除了把中文名先转换成非中文再保存,还有没有其他的方法?配置tomcat在向程序传递中文参数时起作用,但对这个好像没用。

解决方案 »

  1.   

    配置tomcat的server.xml文件,使用utf-8编码:
    <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" 
     URIEncoding="UTF-8" useBodyEncodingForURI="true" /> 
      

  2.   

    配置过了啊,不起作用。
    useBodyEncodingForURI="true" ,这句需要不?
      

  3.   

    在你的action中加入如下代码试试
    response.setHeader("Content-Type", "application/force-download;");         
    response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(filename.getBytes("gb2312"),"iso8859-1") + "\"");将filename改成你的文件名
    我也是tomcat+struts,下载中文没问题
      

  4.   

    回楼上,现在可以下载中文了,我原来设置的是URIEncoding="gb2312",不知道为什么改为utf-8就好了。
    但是现在还有一个问题,就是如果文件名中包含#;%这三个字符之一时有问题。
      

  5.   


    那样的话文件名就不能是中文了,或者要用程序读取文件并给文件名转码后再attachment。
    而且现在最大的问题是如果文件名中包含#;%这三个字符,即使URL用utf8编码,还是有问题。